我有4個表:來選擇並加入這些表的最有效方法
表1(組):
id_group name_group
1 abc
2 def
3 ghi
表2(彩色):
id_color name_color
1 blue
2 red
3 green
表3(綜藝): (調):
id_tone id_color id_group name_tone
1 1 1 ocean
2 5 1 sea
3 9 3 clay
鑑於像1的id_group我要做出選擇導致這樣的事情:
id_group id_color name_variety name_tone
1 1 light ocean
1 3 dark NULL
1 5 NULL sea
我能夠與聯盟來解決問題和改變的順序JOINS但我認爲必須有另一種解決方案
SELECT
GRO.id_group, COL.id_color, VARI.name_variety, TONE.name_tone
FROM
groups GRO
LEFT OUTER JOIN
variety VARI ON (VARI.id_group = GRO.id_group)
LEFT OUTER JOIN
tone TONE ON (TONE.id_group = GRO.id_group)
AND (TONE.id_color = VARI.id_color)
LEFT OUTER JOIN
color COL ON (COL.id_color = VARI.id_color)
OR (COL.id_color = TONE.id_color)
WHERE
GRO.id_group = 1
UNION
SELECT
GRO.id_group, COL.id_color, VARI.name_variety, TONE.name_tone
FROM
groups GRO
LEFT OUTER JOIN
tone TONE ON (TONE.id_group = GRO.id_group)
LEFT OUTER JOIN
variety VARI ON (VARI.id_group = GRO.id_group)
AND (VARI .id_color = TONE.id_color)
LEFT OUTER JOIN
color COL ON (COL.id_color = VARI.id_color)
OR (COL.id_color = TONE.id_color)
WHERE
GRO.id_group = 1
你說的是你有三個表,但我看到的組是第四個表。所以你有三張或四張桌子? –
你說得對,我有三個以上的表格,但我猜想沒有必要顯示組的表格內容。我會編輯,謝謝! – Straty