お世話になっております。
SQLの表3における結合で現在困っております。
下記のテーブルがあるとします。
テーブル名 A
カラム Aコード(主キー)
テーブル名 B
カラム Bコード(主キー),Aコード(Aテーブルへの外部キー)
テーブル名 C
カラム Cコード(主キー),Aコード(Aテーブルへの外部キー),Bコード(Bテーブルへの外部キー)
またCテーブルのBコードはNULLも許容できるため、
テーブルの関連性としては下記のようになります。
A ← B ← C
A ← C
ここで下記の抽出結果を表示するSQLを作成したいのですが、外部結合等を使用しても抽出がうまくできません
●Aテーブル
|Aコード|
1
2
●Bテーブル
|Bコード|Aコード|
1 1
2 1
●Cテーブル
|Cコード|Aコード|Bコード|
1 1 1
2 1
●抽出結果
|Aコード|Bコード|Cコード|
1 1 1
1 2 NULL
1 NULL 2
2 NULL NULL
お忙しい中恐縮ですが、ご教授のほどお願いいたします。
====================================
●追記
下記のような形で作ってみましたが問題ないでしょうか?
実行したところ望みどおりになってはいるのですが、
データが増えた際に正常に取得できているか不安な部分がございます・・。
SELEB A.A_CD, B.B_CD,C.C_CD
FROM A_TABLE A
LEFT JOIN B_TABLE B
ON B.A_CD = A.A_CD
LEFT JOIN C_TABLE C
ON C.B_CD IS NOT NULL AND C.B_CD = B.B_CD
UNION
SELEB A.A_CD,B.B_CD, C.C_CD
FROM A_TABLE A
LEFT JOIN C_TABLE C
ON C.A_CD = A.A_CD
LEFT JOIN B_TABLE B
ON C.B_CD = B.B_CD
WHERE C.C_CD IS NOT NULL
ORDER BY A_CD;
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/30 07:20
2015/07/30 08:09 編集