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

解決済みの質問

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

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作成のヒントを
いただけたら幸いです。

投稿日時 - 2008-08-11 16:37:32

QNo.4244041

すぐに回答ほしいです

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

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

投稿日時 - 2008-08-12 03:28:38

お礼

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

投稿日時 - 2009-05-06 20:02:32

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

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

回答(2)

ANo.2

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

投稿日時 - 2008-08-12 05:40:27

お礼

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

投稿日時 - 2009-05-06 20:04:07

あなたにオススメの質問