2016-09-20 41 views
2

我有三個表並希望在表A和B匹配時連接它們(內部連接),但是,如果沒有匹配ID在A中,我想將它與表C相匹配。像這樣:SQL:如果表B爲空,則從表A與表C的JOIN值

表A person

id person 
1 John 
2 Adam 
3 Carolin 

表B pet

owner_id pet 
1   Bubbles 
3   Fido 

表C vehicle

owner_id vehicle 
2   Mustang 
3   Golf 

我希望然後將結果

person pet/vehicle 
1  Bubbles 
2  Mustang 
3  Fido 

對於人3,選擇寵物而不是車輛,因爲寵物不是空的。

我當然可以這樣做:

select a.person,b.pet,c.vehicle from person a 
join pet b on a.id = b.owner_id 
join vehicle c on a.id = c.owner_id 

但是這會給我三列,在這裏我需要兩個。

回答

2

您可以使用LEFT JOINCOALESCE

select a.person, coalesce(b.pet, c.vehicle) as 'pet/vehicle' 
from person a 
left join pet b on a.id = b.owner_id 
left join vehicle c on a.id = c.owner_id 
+0

這看起來很有趣 - 我會嘗試這個馬上 – ipoga

+0

和它的作品 - 謝謝! – ipoga

相關問題