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』を取得できるのでしょうか?
御存知の方、教えてください!
No.1ベストアンサー
- 回答日時:
1.not inではなく、not existsを使う
Select A.KaiinID
From A,B
Where A.KaiinID=B.KaiinID and
not exists (Select KaiinID From C where A.KaiinID = C.KaiinID );
2.A,Bを結合させた結果にminusを使う
Select A.KaiinID
From A,B
Where A.KaiinID=B.KaiinID
minus
Select KaiinID From C
どちらが速いかはわかりませんが。
回答ありがとうございます。
1.のnot existsを実行すると応答なしになってしまったので
2.を実行したところ、結果が返ってきました!
minusは知らなかったので合わせてありがたい情報でした。
おかげで解決しました。
また機会がありましたら教えてください(ペコリ)。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- その他(プログラミング・Web制作) パイソン初心者です 4 2022/06/29 06:49
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- MySQL #1062 - '0' は索引 'PRIMARY' で重複しています。とでています。 1 2023/01/01 06:13
- Visual Basic(VBA) エクセルのマクロとシートの保護について教えてください。 1 2022/10/18 08:36
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PostgreSqlでFunctionの作成に...
-
Oracle 8i コンマ(,)を含むデ...
-
SQLのエラー(~付近に不適切な...
-
sqlで文字列を最後に追加したい
-
GROUP BYでエラーが発生
-
オブジェクト名 '<table>' が無...
-
エクセルマクロで指定範囲内の...
-
バッチファイルからのBCP起動に...
-
ACCESS ADOでupdateが効かない
-
@@ERRORと@@ROWCOUNT併用について
-
ACCESSで作成したアプリケーシ...
-
SQL Severのクエリ異常
-
クエリの存在チェック
-
何も表示されない実行時エラー...
-
リストボックスで選択したレコ...
-
oracleとVPN
-
ACCESS2000ディスクまたはネッ...
-
SQL SERVER の UNION ALL と GR...
-
エクセルからSQLサーバー ...
-
vbからストアドプロシージャ内...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Oracle 8i コンマ(,)を含むデ...
-
SQLのエラー(~付近に不適切な...
-
エクセルマクロで指定範囲内の...
-
GROUP BYでエラーが発生
-
ACCESSで作成したアプリケーシ...
-
PostgreSqlでFunctionの作成に...
-
ACCESS ADOでupdateが効かない
-
sqlで文字列を最後に追加したい
-
オブジェクト名 '<table>' が無...
-
バッチファイルからのBCP起動に...
-
Access2000環境に対応するMid関...
-
SQLserverのIF文について
-
エクセルからSQLサーバー ...
-
ACCESS2000ディスクまたはネッ...
-
エクセルのグループボックス枠...
-
SQLServerが存在しないか、アク...
-
Accessのレポートが新規作成で...
-
何も表示されない実行時エラー...
-
分散トランザクションを開始で...
-
レポートが開けない。
おすすめ情報