2012-04-27 72 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