2012-04-27 59 views

回答

2
SELECT mem.member_name, g.* 
, coalesce(f.flower_color, b.bear_color) as color 
from members mem 
inner join general g on mem.member_id = g.member_id 
left join flowers f on g.gift_item_id = f.flower_id AND g.gift_item = 'flower' 
left join bears b on g.gift_item_id = b.bear_id AND g.gift_item = 'bear' 
WHERE g.month='june' 

有沒有辦法區分熊花,所以我增加了測試的連接。這非常臭。你可能會重新考慮你的模式。

+0

臭臭怎麼回事?在數據庫或混亂的查詢中沉重? – Wonka 2012-04-27 18:55:02

+1

您有在表格名稱和常規表格中編碼的禮物類型。如果你想給人一個有趣的氣球,你就有很多工作要做。帶有gift_type字段的單個禮品表可能是更好的方法。 – Andrew 2012-04-27 19:01:23

1

看來,如果你使用獨特的禮物項ID工作。

http://www.sqlfiddle.com/#!2/c02c8/1

+0

我知道:)但ID可以在不同的表中相同,所以我正在尋找一個解決方案,將基於'花'或'熊'來區分,而不是遇到ID的問題 – Wonka 2012-04-27 18:46:19