• ベストアンサー

オラクルの外部結合について

仮にテーブル類をこのように設定します テーブル  項目 ------------------- マスタ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にしたら良いでしょうか? 宜しくご教授下さい。お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • ALGO-9
  • ベストアンサー率66% (12/18)
回答No.2

「マスタ222に紐つくデータがないマスタ111のデータも抽出したい場合は、どのようなSQLにしたら良いでしょうか?」 と言うことですが、これは両テーブルをマージすればいいことではないですかね。 UNION結合すればいいのでは?

tomo1012
質問者

お礼

両テーブルの結合条件を見直しにて何とか 意図して結果を得ることが出来ました。 ご回答ありがとうございました

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

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が無ければ、外部結合以前の問題です。

tomo1012
質問者

お礼

両テーブルの結合条件を見直しにて何とか 意図して結果を得ることが出来ました。 ご回答ありがとうございました

関連するQ&A