什麼是正確的語法來執行外部聯接下列要求:級聯左外聯接
A於A.c1 = B.c1
乙左外左外連接乙加入C對B.c2 = C.c2
A.c1上的左外連接D = D.c1
所以A,B和C級聯以及A和D級聯。
我知道如何編寫A-> B-> C,但我不知道如何添加D.我需要範圍或括號。
什麼是正確的語法來執行外部聯接下列要求:級聯左外聯接
A於A.c1 = B.c1
乙左外左外連接乙加入C對B.c2 = C.c2
A.c1上的左外連接D = D.c1
所以A,B和C級聯以及A和D級聯。
我知道如何編寫A-> B-> C,但我不知道如何添加D.我需要範圍或括號。
這應該工作,只要你想:
SELECT
*
FROM A
left outer join B on A.c1 = B.c1
left outer join C on B.c2 = C.c2
left outer join D on A.c1 = D.c1
數據庫引擎看什麼你都加入到,沒有的連接順序。 D連接到A,並且與B或C無關
您加入的順序無關緊要,數據庫將在所有表中建立行的每個組合的結果集,受限於on
子句。例如,由於1 = 1總是爲真,這將給你1000行:
select *
from ten_row_table A
left join ten_row_table B on 1=1
left join ten_row_table C on 1=1
但是這會給你10行:
select *
from ten_row_table A
left join ten_row_table B on A.id = B.id
left join ten_row_table C on A.id = C.id
可以使複雜的查詢稍微壓痕可讀。我們通過四個空格縮進第二個和更多的依賴關係,例如:
from A
left outer join B on A.c1 = B.c1
left outer join C on B.c2 = C.c2
left outer join D on C.c3 = D.c3
left outer join E on B.c2 = E.c2
left outer join F on A.c1 = F.c1
尼斯縮進計劃! –
+1:我太慢了:( –