我这里有一个sql小提琴: http://www.sqlfiddle.com/#!2/fbd48/1
花的颜色应为红色,熊的颜色应为棕色,但两者的颜色均为红色。
不确定COALESCE是否适合此处,但在此处类似的内容中已接受答案: MySQL - Retrieve row value from different table depending on value of row in a table
答案 0 :(得分: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'
没有办法区分花和熊,所以我在连接中加入了测试。这很臭。你可能会重新考虑你的架构。
答案 1 :(得分:1)
如果您使用独特的礼品ID,似乎有效。