【SQL】やりがちな外部結合のミスや誤り
ここではORACLEデータベースのSQLで、やりがちな外部結合のミスや誤りについて紹介しています。
外部結合のミスのサンプル
ORACLEのSQLでは、JOINの他にも結合条件の列名の後ろに(+)を使って外部結合をすることが出来ました。
(+)で外部結合をするときに、やりがちなミスがあります。
次のSQLでは外部結合をしているように見えますが、実は外部結合になっていません。
select
a.id
,b.div_cd
,b.div_nm
from
table1 a
,table b
where
a.div_cd = b.div_cd(+)
and b.div_cd = '100'
;
上記のSQLでは「and b.div_cd = ‘100’」となっています。
これが下のSQLのように「and b.div_cd(+) = ‘100’」でないと外部結合にはなりません。
select
a.id
,b.div_cd
,b.div_nm
from
table1 a
,table b
where
a.div_cd = b.div_cd(+)
and b.div_cd(+) = '100'
;
外部結合のミスの見つけ方
SQLの外部結合されているかどうかは、実行計画を見ると簡単に見つけられます。
実行計画を確認し、OUTER JOINになっていれば外部結合です。
実行計画ではOUTERと出るのは外部結合のときなので、これを目印にチェックをしましょう。
まとめ
SQLの外部結合は(+)の付け忘れによって発生しやすい。
外部結合のミスをチェックするのは、実行計画でOUTER JOINになっていることを確認する。
この他にも、SELECT文には様々な機能や使い方があります。
詳しくは「【SQL】SELECT文の書き方:サンプル多数あり」で解説していますのでぜひ参考にしてください。