Join
在結果中加入更多記錄
我有這個查詢:
SELECT table1.foo, table2.bar, table3.abc, table4.xyz FROM table1 table1, table2 table2, table3 table3, table4 table4 WHERE table1.id = table2.id AND table1.id2 = table3.id2 AND table1.id3 = table4.id3 AND (table1.foo BETWEEN 10 AND 30)
我想在結果中獲得額外的行,table1 中的數據在 table2 和 table3 中沒有匹配的記錄,但仍然只有那些與 table4 中的數據匹配的記錄。我怎麼寫這個?
我想我需要兩個左連接並保持第三個正常連接。
表:
TABLE1: id (references TABLE2), id2 (references TABLE3), id3 (references TABLE4), foo
TABLE2 id, bar
TABLE3 id, abc
TABLE4 id, xyz
您希望查詢看起來像這樣:
SELECT foo.table1, bar.table2, table3.abc, table4.xyz FROM table1 LEFT OUTER JOIN table2 ON table1.id2 = table2.id LEFT OUTER JOIN table3 ON table1.id3 = table3.id JOIN table4 ON table1.id4 = table4.id WHERE table1.foo BETWEEN 10 AND 30
它是
SQL JOIN
語法,所以你可能想查看一些教程或課程,比如CodeAcademy中的一個。另一個有助於了解連接的重要資源是 Jeff Atwood對 sql joins 的視覺化解釋。就像 @a_horse_with_no_name 和 @Vladimir_Oselsky 評論的那樣,您應該從舊的 ANSI-89 SQL 語法切換到目前的 ANSI-92,這樣可以使用更靈活的
JOIN
語法更輕鬆地編寫(和讀取)查詢。