牛、豚、鶏、どれか一つ食べられなくなるとしたら?

oracle初心者です。

表A:ID、氏名
表B:ID、入社年、給与

上の表A,Bを、表Aを左辺にしてLEFT JOINする場合に、単純な外部結合では無く、
入社年が2000年以降の表Bのみ結合したい時のSQL文ですが、

select *
from 表A LEFT JOIN 表B ON 表A.ID=表B.ID
where 表B.入社年 > 2000

または、

select *
from 表A,表B
where 表A.ID=表B.ID(+)
and 表B.入社年 > 2000

のように記述して実行すると、内部結合になってしまいます。
これを(外部結合として)実現するには、どのように記述すればよいでしょうか?

宜しくお願いいたします。

A 回答 (2件)

select * from 表A left join 表B on (表A.ID=表B.ID and 表B.入社年>2000);



または

select * from 表A,表B where 表A.ID=表B.ID(+) and 表B.入社年(+) > 2000;

でOKだと思います。

注意すべきは、

ANSI構文で書くなら、JOIN対象の抽出条件も合わせて書くこと。
従来の外部結合で書くなら、外部結合の全要素に(+)を書くことです。
    • good
    • 1
この回答へのお礼

お礼が遅くなり申し訳けございません。

お陰様で、解決いたしました。

ありがとうございました。

お礼日時:2005/11/30 20:08

select *


from 表A,(select * from 表B where 表B.入社年 > 2000) as B
where 表A.ID=B.ID(+)
;
    • good
    • 1
この回答へのお礼

お礼が遅くなり申し訳けございません。

お陰様で、解決いたしました。

ありがとうございました。

お礼日時:2005/11/30 20:08

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


おすすめ情報