プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (2件)

where A.code1 = B.code1(+) and A.code2 = B.code2(+)


ではだめでしょうか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/05/06 20:04

where A.code1||A.code2 = B.code1||B.code2(+)


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

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

お礼日時:2009/05/06 20:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!