[英]Oracle joining multiple tables?
我正在嘗試執行以下操作
select
TA.C1 ,TB.C1 ,TC.C1
from TableA TA ,TableB TB , TableC TC
where TA.C1 = "ABC"
AND TA.C2 = TB.C1
and TA.C3 = TC.C1
結果是
我的目的是向此查詢添加更多表
select
TA.C1,TB.C1,TC.C1,TD.C1,TE.C1
from TableA TA ,TableB TB , TableC TC , TableD TD, TableE TE
where TA.C1 = "ABC"
and TA.C2 = TB.C1
and TA.C3 = TC.C1
and TA.C4 = TD.C1
and TD.C2 = TE.C1
但是由於TD.C1列包含空值,而TA.C4始終包含一些值,所以得到以下結果。
預期的結果是
我已經嘗試使用Joins聯接4個表:
select
TA.C1,TB.C1,TC.C1,TD.C1
from TableA TA
JOIN TableB TB ON (TA.C2 = TB.C1)
JOIN TableC TC ON (TA.C3 = TC.C1)
LEFT JOIN TableD TD ON (TA.C4 = TD.C1)
AND TA.C1 = "ABC"
結果非常接近我的預期:
問題是我不確定如何加入第五張表(表E),因為這與表A沒有任何關系。
您可以只在表E中添加另一個左連接到表D。基本上,表D和E之間存在關系,並且輸入到表E中的數據必須與該表保持一致。 如果沒有數據,則該關系仍然存在,因此聯接將根據需要返回空值。
select
TA.C1,TB.C1,TC.C1,TD.C1, TE.C1
from TableA TA
INNER JOIN TableB TB ON (TA.C2 = TB.C1)
INNER JOIN TableC TC ON (TA.C3 = TC.C1)
LEFT JOIN TableD TD ON (TA.C4 = TD.C1)
LEFT JOIN TableE TE ON (TD.C2 = TE.C1)
AND TA.C3 = "ABC"
最佳實踐:在后面的示例中,使用顯式聯接。
當聯接多個表時,聯接不必全部從同一個表開始,每個表必須簡單地相關。 那可以
select *
from a
inner join b on a.id = b.id_a
inner join c on b.id = c.id_b
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.