こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

仮にテーブル類をこのように設定します

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

投稿日時 - 2005-01-10 17:14:28

QNo.1161371

すぐに回答ほしいです

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

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

投稿日時 - 2005-01-11 04:07:40

お礼

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

投稿日時 - 2005-01-17 18:49:19

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

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

投稿日時 - 2005-01-10 20:29:46

お礼

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

投稿日時 - 2005-01-17 18:50:24

あなたにオススメの質問