2011-07-11 10 views
3

私はMySQLを使用しています。テーブルA、テーブルB、テーブルCがあります。テーブルAは基本テーブルです。テーブルBとCはどちらもテーブルAへの外部キーを持っていますが、出力がこのように見えるように行を引き出したいと思います。SQLに「ヌル行」を含めることはできますか?

A | B | C 
---------------- 
1 | 1 | NULL 
1 | 2 | NULL 
1 | NULL | 1 
1 | NULL | 2 
2 | 3 | NULL 
2 | NULL | 3 

Bは、もはや任意の行は、特定のキーのために残されたときに、クエリがCに移行しないと、それは簡単でなければならないようにこれは思えるBの行の出力を停止、私は来るトラブルを抱えているように見えますそれが行われるべきである方法で。

また、質問のタイトルはおそらく意味がありませんが、シナリオを最もよく記述する方法がわかりませんでした。

+0

決して完全な答えを、しかし、テーブルAの試合が、不一致があるかどうテーブルBにテーブルAから 'OUTER JOIN'を行うことがBからのすべての列にNULLを戻すことがテーブルB. –

+2

に私が質問を理解したように、それは答え全体ではない。 Bに何かがある場合、CはNULLでなければなりません。 Bに何もない場合は、Cを探します。 –

答えて

6

を、OUTER JOINのは、あなたがしたい出力フォーマットを与えるつもりはありません。このような何か試してみてください:

SELECT a.id AS A, b.id AS B, NULL AS C 
FROM tableA a 
INNER JOIN tableB ON a.id = b.fid 
UNION 
SELECT a.id AS A, NULL AS B, c.id AS C 
FROM tableA a 
INNER JOIN tableC ON a.id = c.fid 
ORDER BY 1 
2

もちろん、はい、LEFT JOINはあなたの最も鋭いナイフです。

SELECT A.*,B.*,C.* FROM A 
LEFT JOIN B ON A.ID = B.REFID 
LEFT JOIN C ON A.ID = C.REFID 
0

あなたが外部結合を使用できます。

それについて考えて
select a.id, b.id, c.id 
from a 
left join b on a.id = b.id 
left jon c on a.id = c.id 
関連する問題