說我有這三個表:留下空結果加入時沒有找到匹配
Table: Baskets
id | name
1 Sale
2 Premium
3 Standard
4 Expired
Table: Fruit
id | name | basketid
1 Apples 1
2 Oranges 2
3 Grapes 3
4 Apples 2
5 Apples 4
Table: Veggies
id | name | basketid
1 Carrots 1
2 Peas 2
3 Asparagus 1
它可能看起來像第二兩個表應該剛剛被一個表叫生產,但在實際情況有是他們成爲不同表格的好理由。如果籃子在水果或素食表中有行,我需要編寫一個返回行的連接。我以爲我可以用兩個左連接,像這樣實現:
Select Baskets.*, fruit.name as fruit,
veggies.name as veggies
from Baskets
left join Fruit on Baskets.id = Fruit.basketid
left join veggies on Baskets.id = Veggies.basketid
where Baskets.id = 2;
但這種說法在我想是空字段返回值。實際輸出:
id | name | fruit | veggies
2 Premium Oranges Peas
2 Premium Apples Peas
輸出我想:
id | name | fruit | veggies
2 Premium Oranges
2 Premium Apples
2 Premium Peas
我怎樣才能做到這一點?
誰不愛過期的水果和蔬菜? :) – NullUserException 2010-09-08 16:14:13
@NullUserException:那個笑話已經過期了:p – 2010-09-08 16:15:16
很高興我沒有在這個例子中包含完全被寵壞和爛的籃子! – Todd 2010-09-08 17:18:01