※ ChatGPTを利用し、要約された質問です(原文:複数の表の外部結合について)
Oracle8iを使用して複数の表から特定のデータを抽出する方法
2003/09/09 17:43
このQ&Aのポイント
Oracle8iを使用して複数の表から特定のデータを抽出するSQL文を作成する方法について説明します。
「A,B,Cの表のうちCのみに存在しないKaiinID」を検索するSQL文を実行した際に発生するエラーについて説明します。
「3つの表のうち1つの表のみに存在しないKaiinID」を取得するための方法についてアドバイスを求めています。
Oracle8iを使用して複数の表から特定のデータを抽出するSQL文を作っています。
【表A】
KaiinID | Name
-----------------
11111 | aaaaa
-----------------
22222 | bbbbb
-----------------
44444 | ddddd
-----------------
55555 | eeeee
-----------------
【表B】
KaiinID | Address
-------------------
11111 | address1
-------------------
44444 | address4
-------------------
66666 | address6
-------------------
77777 | address7
-------------------
【表C】
KaiinID | Memo
-----------------
11111 | Memo1
-----------------
22222 | Memo2
-----------------
33333 | Memo3
-----------------
66666 | Memo6
-----------------
【欲しい結果】
KaiinID
--------
44444
『A,B,Cの表のうちCのみに存在しないKaiinID』を検索するSQL文を実行したところ、以下のエラーが表示されてしまいました。
Select A.KaiinID
From A,B,C
Where A.KaiinID=B.KaiinID and
A.KaiinID=C.KaiinID(+) and
B.KaiinID=C.KaiinID(+);
「3行でエラーが発生しました。
ORA-01417:表が少なくとも1つの他の表に外部結合されている可能性があります。」
このエラーを見ても「外部結合されている可能性?確かにしてるけど・・・」
としかわかりません。
Select A.KaiinID
From A,B
Where A.KaiinID=B.KaiinID and
A.KaiinID not in (Select KaiinID From C);
ともしてみたのですが、こちらは実行した途端SQL*Plusが応答なしになってしまいました。
(実際の表にはA,B,Cそれぞれ300万件近いデータがあります)
どのようにすれば、『3つの表のうち1つの表のみに存在しないKaiinID』を取得できるのでしょうか?
御存知の方、教えてください!
質問の原文を閉じる
質問の原文を表示する
お礼
回答ありがとうございます。 1.のnot existsを実行すると応答なしになってしまったので 2.を実行したところ、結果が返ってきました! minusは知らなかったので合わせてありがたい情報でした。 おかげで解決しました。 また機会がありましたら教えてください(ペコリ)。