2012-03-31 10 views
8

私はいくつかのテーブル(cca 8)を結合するクエリを把握しようとしています。ある時点で、私は2つのテーブルのうちの1つに参加する必要があります。したがって、この点まで結果を呼び出すことができます。A.今、私はBまたはCに参加したいです。私がBを使うと、結果は小さくなります。結合後に結果がない場合は、代わりにCに参加する必要があります。それ以外の場合は他の参加に参加してください

要約すると、(A、C)の交点はより大きな結果をもたらし、(A、B)の交点が空の場合にのみCに結合します。

これをmysqlでスムーズに行うにはどうすればよいですか?最初の主キーに参加している場合にのみ参加

答えて

13

はnullです:

SELECT * 
FROM A 
LEFT JOIN B ON A.id = B.id 
LEFT JOIN C ON B.id IS NULL AND A.id = C.id 
+3

あなたはBまたはCの結果はあなたの選択リストに同じ列に表示したい場合は、(SELECT COALESCE 'のようなものを使用することができますB.id、C.id)をidとし、othercolumnnameとして合体(B.othercolumnname、C.othercolumnname)します。 – Asaph

+0

素晴らしい点、ありがとうございましたAsaph – GavinCattell

+0

おかげさまで、私が探していたアイデアです –