2012-04-27 14 views
1

私はここに、SQLフィドルを持っている: http://www.sqlfiddle.com/#!2/fbd48/1MySql - COALESCEを使用して正しい値を取得しますか?

を色は、クマのための花と茶赤でなければなりませんが、それは両方のための赤を示しています。

ないCOALESCEがここに収まるが、ここでは類似した何かを受け入れ答えにあったかどうかわから: MySQL - Retrieve row value from different table depending on value of row in a table

答えて

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

スメルイどのように? DBや複雑なクエリで重いのように? – Wonka

+1

ギフトの種類は、テーブル名と一般テーブルにエンコードされています。あなたは誰かに面白い気球を与えたいと思ったら、たくさんの仕事があります。 gift_typeフィールドを持つ1つのギフトテーブルは、より良いアプローチかもしれません。 – Andrew

1

あなたのユニークなギフトアイテムIDを使用している場合に動作するようです。

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

+0

私は知っています:)しかし、IDは異なるテーブルで同じである可能性があるので、私はIDで問題に実行する代わりに '花'または 'クマ'に基づいて差別化するソリューションを探しています – Wonka

関連する問題