[英]Getting a field from a table that is not in the left outer join in the same query
我有4個表,其中3個已連接,但我需要從第四個表中獲取一個字段(Table_D)。 為簡單起見,我們假設它們是表A,B,C,D。
Select Distinct A.Field_1, B.Field_2, C.Field_3
From Table_A
Left outer join B on A.Field_z= B.Field_z
Left Outer Join C on A.Field_z= C.Field_z
where A.Field_z in (1111);
這似乎有效但我需要Table_D中的一個字段,它只通過Table_C連接到Table_A。
如何將其添加到聯接中? 或者我可以嗎?
謝謝!
WB
當然你可以添加它。 你沒有指定邏輯,但是這樣:
Select Distinct A.Field_1, B.Field_2, C.Field_3, D.??
From Table_A a Left outer join
B
on A.Field_z= B.Field_z Left Outer Join
C
on A.Field_z= C.Field_z Left Outer Join
D
on . . .
where A.Field_z in (1111);
只需填寫您想要的條件。 您想要一個left join
,因為c
和d
之間的條件會將外連接轉換為c
到內連接。
如果我理解正確,我相信這會奏效:
Left Outer Join D on C.Field_z= D.Field_z
你可以試試這種方式。 這將有助於我猜
Select Distinct A.Field_1, B.Field_2, C.Field_3, c.Field_4
From Table_A
Left outer join B on A.Field_z= B.Field_z
Left Outer Join ( select C.field_3, d.Field_4, c.Field_z from c inner join d on c.field_z = d.field_z ) c on A.Field_z= C.Field_z
where A.Field_z in (1111);
on
子句基本上具有where
子句的所有功能。 對於連接的任何部分的on
子句可以引用from
子句中任何實體的任何屬性,我懷疑你的混淆來自於認為你只能將后續實體加入from
子句中的第一個實體。 如果Table_D
與Table_A
到Table_C
相關,您可能會看到from
/ join
/ on
構造,如:
select a.thing, b.things, c.thang, d.stuff
from Table_A a
left join Table_B b
on a.id = b.a_id
left join Table_C c
on a.id = c.a_id
left join Table D d
on d.id = c.d_id
where
a.this = b.that
請注意,單詞“outer”隱含在左連接中,並不是語法完成所必需的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.