• ベストアンサー

外部結合に条件をつけたい

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 のように記述して実行すると、内部結合になってしまいます。 これを(外部結合として)実現するには、どのように記述すればよいでしょうか? 宜しくお願いいたします。

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

  • ベストアンサー
回答No.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対象の抽出条件も合わせて書くこと。 従来の外部結合で書くなら、外部結合の全要素に(+)を書くことです。

mamamama1969
質問者

お礼

お礼が遅くなり申し訳けございません。 お陰様で、解決いたしました。 ありがとうございました。

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

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

mamamama1969
質問者

お礼

お礼が遅くなり申し訳けございません。 お陰様で、解決いたしました。 ありがとうございました。