1
結合とnullについて多くの質問がありますが、この特定のスキーマと一致するものは見つかりませんでした。私は3つのかわいいテーブルを持っています。NULLで結合する
+---------+
| service |
+---------+
| id |
| name |
+---------+
+-----------+
| propnames |
+-----------+
| id |
| name |
| sort |
+-----------+
+----------+
| props |
+----------+
| sid |
| pid |
| value |
+----------+
私は(propnamesに)プロパティを追加できるようにしたいと私のサービスを照会し、私の性質(小道具)を結ぶと、プロパティがまだ設定されていない知っているだろう。
(service.id), (service.name), (property.id), (property.name), (props.value)
1, "AAA", 1, "property_a", "Service AAA has property_a value"
1, "AAA", 2, "property_b", "Service AAA has property_b value"
1, "AAA", 3, "property_c", NULL
2, "BBB", 1, "property_a", "Service BBB has property_a value"
2, "BBB", 2, "property_b", NULL
2, "BBB", 3, "property_c", NULL
:
これがある場合は、サービス
(id), (name)
1, "AAA"
2, "BBB"
これはこれは
(service.id), (propname.id), (value)
1, 1, "Service AAA has property_a value"
1, 2, "Service AAA has property_b value"
2, 1, "Service BBB has property_a value"
そして、最終的に私のクエリは、これを生成します小道具
あるpropnames(id), (name), (sort)
1, "property_a", 1
2, "property_b", 2
3, "property_c", 3
です
理想的には、それはservice.nameのASC -then- property.sort
によってソートされるだろう現在、不完全なクエリは次のとおりです。
SELECT s.id, s.name, p.id, p.name, props.value
FROM service.s
LEFT JOIN propnames p ON s.id = p.sid
LEFT JOIN props ON props.pid = p.id
ORDER BY s.name ASC, p.sort ASC