- ベストアンサー
オラクルの外部結合について
仮にテーブル類をこのように設定します テーブル 項目 ------------------- マスタ111...a,b,c,d,e マスタ222...f,g,h,i,j ------------------- ※ マスタ111とマスタ222のKEYは(a = f,b = g)とします。 SQLの抽出にて、a~jまでの全ての項目をマスタ111 に存在する全てのデータのみ抽出したい (マスタ222に紐つくデータがない場合はf~j項目は空白として抽出) と思い、以下のような下のようなSQLとしてみましたが、これだとマスタ222に紐つくデータがない場合は抽出の対象外となってしまいました。 -------------------------- SELECT A.a A.b A.c A.d A.e B.f B.g B.h B.i B.j FROM マスタ111 A,マスタ222 B WHERE A.a = B.f(+) AND A.b = B.g(+) -------------------------- マスタ222に紐つくデータがないマスタ111のデータも抽出したい場合は、どのようなSQLにしたら良いでしょうか? 宜しくご教授下さい。お願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
「マスタ222に紐つくデータがないマスタ111のデータも抽出したい場合は、どのようなSQLにしたら良いでしょうか?」 と言うことですが、これは両テーブルをマージすればいいことではないですかね。 UNION結合すればいいのでは?
その他の回答 (1)
- bin-chan
- ベストアンサー率33% (1403/4213)
FROM マスタ111 A,マスタ222 B WHERE A.a = B.f(+) AND A.b = B.g(+) で合っていそうですが、一致分しかでない、ということですね? 元テーブルのデータはどうでしょう? 本当にマスタ111にあって、マスタ222は存在しないレコードはありますか? select A.a, A.b from マスタ111 A minus select B.f, B.g from マスタ222 B ; を実行して、結果が得られますか? 表示されるA.a, A.bが無ければ、外部結合以前の問題です。
お礼
両テーブルの結合条件を見直しにて何とか 意図して結果を得ることが出来ました。 ご回答ありがとうございました
お礼
両テーブルの結合条件を見直しにて何とか 意図して結果を得ることが出来ました。 ご回答ありがとうございました