SQLって深いよね、ほんと。
先日、以下のようなクエリを見てこんな書き方見た事無いとか、クエリが間違ってんじゃないのとか騒いでいたので、そんなこと無いよ! と一言。(アプリケーションの要求仕様までは把握していないので、アプリケーション的に正しいのか?ってところまでは不明だったのですが…)
外部結合でOracleの方言を使っちゃうとパッと見、結合条件なのか選択条件なのか分かり憎いのは間違いないので、利用できるリリースのOracleなら標準的な記述にしたほうがいいよねというお話。
以下、Oracleの方言で外部結合を行うクエリ。5行目の部分が騒ぎの発端。多分、みなさん結合条件じゃなくて、選択条件と勘違いしたか、結合条件だと判断してたとしても何か勘違いした模様で騒いでいたらしい。
SCOTT> l
1 SELECT ename,dname,loc
2 FROM emp,dept
3 WHERE
4 emp.deptno = dept.deptno(+)
5* AND dept.loc(+) = 'NEW YORK'
SCOTT> /
ENAME DNAME LOC
---------- -------------- -------------
MILLER ACCOUNTING NEW YORK
KING ACCOUNTING NEW YORK
CLARK ACCOUNTING NEW YORK
scott
JAMES
TURNER
BLAKE
MARTIN
WARD
ALLEN
FORD
JONES
SMITH
ほげ
14行が選択されました。
SCOTT>
| 固定リンク | コメント (0) | トラックバック (0)














最近のコメント