Oracle独自結合構文による等価結合
ここまではSQL:1999結合構文を使用した等価結合の記述方法を違う記事で解説してきましたが、等価結合はOracle独自結合構文で記述することもできます。
Oracle結合構文での等価結合の構文は以下のとおりです。FROM句に結合する表の名前を「,」(カンマ)で区切って指定します。この構文はOracle独自結合構文の中でも基本となる重要な構文です。
▼ Oracle独自結合構文
SELECT [表名.]列名 [, [表名. ]列名 …] FROM 表名1, 表名2
WHERE 結合条件
[AND 結合条件以外の条件];
Oracle独自結合構文には以下の特徴があります。SQL:1999結合構文のON句を使用した結合と似ていますが、異なる点もありますので混同しないように注意してください。
〇 結合条件はWHERE句に指定する
SQL:1999結合構文のON句を使用した結合では、ON句に結合条件を、WHERE句に結合条件以外の条件を指定しますが、Oracle独自結合構文による等価結合ではWHERE句に結合条件を指定し、結合条件以外の条件がある場合はAND演算子を使用して追加します。そのため、結合条件と結合条件以外の条件がWHERE句に混在することになります。
〇 2つの表に共通して存在する列は、表接頭辞を使用して修飾する必要がある
Oracle独自結合構文による等価結合では、SQL:1999結合構文のON句を使用した結合と同様に、2つの表に同じ名前の列がある場合は、表接頭辞を使用して修飾する必要があります。表接頭辞を使用しないとエラーになるので注意してください。
なお、SQL:1999結合構文とOracle独自結合構文にパフォーマンス上の差はありません。どちらを使用しても同じパフォーマンスになります。
以下の例では、Oracle独自結合構文を使用して、EMPLOYEES表とDEPARTMENTS表をDEPTNO列で等価結合しています。
▼ Oracle独自結合構文による等価結合
SQL> SELECT e.empno, e.ename, d.dname 2 FROM employees e, departments d 3 WHERE e.deptno = d.deptno 4 AND d.deptno IN (10, 20); EMPNO ENAME DNAME ------ ------- ----------- 1001 佐藤 管理 1002 鈴木 研究開発 1005 渡辺 研究開発 1008 中村 管理 1009 小林 研究開発 1011 加藤 研究開発 1013 山田 研究開発 1014 佐々木 管理 8行が選択されました。
まとめ
▼ SQL:1999 結合構文とOracle独自結合構文にパフォーマンス上の差はない