1320154459 SQLで0件のレコードを探す方法について教えてください。

画像のようなテーブルがあるとします。

Aテーブルのデータはユニークで絶対存在しています。
AテーブルのKY1コードと外部キーをもとにBテーブルを検索して存在しないレコードを探したいのですが・・・
外部結合じゃないと0件のデータは見つけられないでしょうか?

また、Bテーブルのデータは複数あるのでおそらくgroup byのデータで比較しなくてはいけないかと思うのですがどのような記述がスマートでしょうか?

ちなみに画像からするとAテーブルのKY1コードがCCC001がBテーブルに無いので見つけたいものになります。
Ora10g対象です。
詳しい方よろしくお願いします。

回答の条件
  • 1人50回まで
  • 13歳以上
  • 登録:2011/11/01 22:34:20
  • 終了:2011/11/07 23:10:10

ベストアンサー

id:degucho No.2

degucho回答回数253ベストアンサー獲得回数672011/11/01 23:40:17

外部結合ダメなの?

SELECT A.*
  FROM A LEFT JOIN
       B ON     A.KY1コード = B.KY1コード
            AND A.外部キー  = B.外部キー
 WHERE B.KY1コード IS NULL
id:mrr00

返信が遅くなりすみません 大変参考になる意見ありがとうございました。

2011/11/07 23:10:04

その他の回答(1件)

id:a-kuma3 No.1

a-kuma3回答回数4489ベストアンサー獲得回数18572011/11/01 23:16:25

こんな感じかなあ...

select * from A_TABLE
    where not exists ( select 'X' from B_TABLE where A_TABLE.KY1_CODE = B_TABLE.KY1_CODE );
id:mrr00

返信が遅くなりすみません 大変参考になる意見ありがとうございました。

2011/11/07 23:09:58
id:degucho No.2

degucho回答回数253ベストアンサー獲得回数672011/11/01 23:40:17ここでベストアンサー

外部結合ダメなの?

SELECT A.*
  FROM A LEFT JOIN
       B ON     A.KY1コード = B.KY1コード
            AND A.外部キー  = B.外部キー
 WHERE B.KY1コード IS NULL
id:mrr00

返信が遅くなりすみません 大変参考になる意見ありがとうございました。

2011/11/07 23:10:04
  • id:tdoi
    KY1コードと外部コードはどういう位置づけ?
    テーブルBに存在するということは、KY1と外部コードの両方が一致することが条件?
  • id:mrr00
    皆様ありがとうございます。
    ひとまずこちらで御礼を申し上げます。
    >テーブルBに存在するということは、KY1と外部コードの両方が一致することが条件?
    その通りになります。

    ちなみに外部結合でもいいのですが、他に手法があるのか疑問に思いまして・・・
  • id:taknt
    普通は 外部結合だよなぁ。
    なかったら NULLになるから・・・・って 元が NULLだったら あるのかないのか わかんねーっ。
    んなことは ないか。
  • id:windofjuly
    うぃんど 2011/11/02 15:36:23
    >他に手法があるのか疑問に思いまして・・・
     
    第1候補 NOT EXISTS
    第2候補 NOT IN
    第3候補 外部結合
    第4候補 MINUS
    実際のデータによって速度は大きく変わるので、
    パフォーマンステストをして最終決定
     
    いまどき上記1,2,3を使えないデータベースのほうが数少なく、
    パフォーマンスの点で外部結合を用いていた時代とも違いますので、
    外部結合を第一候補にあげることはまず無いです
     
    第一候補が回答として既にあがっているので、今回はコメントで
  • id:mrr00
    皆様返信が遅くなりすみません。
    大変参考になる意見ありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません