1

我在这里有一个 sql 小提琴: http ://www.sqlfiddle.com/#!2/fbd48/1

花的颜色应该是红色的,熊的颜色应该是棕色的,但两者都显示为红色。

不确定 COALESCE 是否适合此处,但在此处接受了类似内容的答案: MySQL - Retrieve row value from different table based on value of row in a table

4

2 回答 2

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'

没有办法区分花和熊,所以我在连接中添加了测试。这很臭。您可能会重新考虑您的架构。

于 2012-04-27T18:46:47.920 回答
1

如果您使用唯一的礼品项目 ID,它似乎可以工作。

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

于 2012-04-27T18:44:29.193 回答