- ベストアンサー
外部結合に条件をつけたい
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 のように記述して実行すると、内部結合になってしまいます。 これを(外部結合として)実現するには、どのように記述すればよいでしょうか? 宜しくお願いいたします。
- みんなの回答 (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対象の抽出条件も合わせて書くこと。 従来の外部結合で書くなら、外部結合の全要素に(+)を書くことです。
その他の回答 (1)
- bin-chan
- ベストアンサー率33% (1403/4213)
回答No.1
select * from 表A,(select * from 表B where 表B.入社年 > 2000) as B where 表A.ID=B.ID(+) ;
質問者
お礼
お礼が遅くなり申し訳けございません。 お陰様で、解決いたしました。 ありがとうございました。
お礼
お礼が遅くなり申し訳けございません。 お陰様で、解決いたしました。 ありがとうございました。