• ベストアンサー

複数の項目をキーとする検索について

Oracle9i Enterprise Edition R2の環境下で 以下のようなトランザクション、マスタテーブルより 1SQLにて[Output]の内容を抽出したいと思っております。 ****************************************** [A]テーブル・・・トランザクション(20万件) ID first_name last_name code1 code2 rank ****************************************** [B]テーブル・・・マスタ(10万件) class_name code1 code2 B.code1+B.code2でユニーク ****************************************** [Output]・・・抽出結果 A.ID A.first_name A.last_name B.class_name A.rank 結合のキーはA.code1+A.code2=B.code1+B.code2 [Output]には[A]を全件を出力したい ****************************************** [補足] A.code1(ex.12345)・・・NULL有 A.code2(ex.001)・・・NULL有 B.code1(ex.12345)・・・NULL、ダブリ無 B.code2(ex.001)・・・NULL、ダブリ無 以下、質問です。 A.ID A.first_name A.last_name B.class_name A.rank A.code1||A.code2 = B.code1||B.code2(+) このようなSQLは発行できないことは確認済みなのですが、 これ以外で[Output]のような抽出結果をSQLにて抽出するには どのようにするのが一番効率的でしょうか? できましたら、INDEXの張り方等も含め、SQL作成のヒントを いただけたら幸いです。

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

  • ベストアンサー
回答No.1

where A.code1||A.code2 = B.code1||B.code2(+) でなく where A.code1||A.code2 = B.code1(+)||B.code2(+) と書けば、条件としては正しく評価されると思いますよ。 ANSI構文のOUTER-JOINでも書けますけどね。

noa104
質問者

お礼

回答が遅くなり誠に申し訳御座いません。 回答有難う御座いました。

その他の回答 (1)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

where A.code1 = B.code1(+) and A.code2 = B.code2(+) ではだめでしょうか。

noa104
質問者

お礼

アドバイス有難う御座いました。 いただいたアドバイスを元に考えたところうまくいきました。 本当に有難う御座いました。 また、お礼が遅くなり誠に申し訳御座いません。

関連するQ&A