モダン SQL 構文: FROM 句での LEFT JOIN と複数のテーブル選択
SQL には 2 つの異なるテーブル接続構文が用意されています: (1) FROM 句内のすべてのテーブルをリストし、WHERE 句を使用して接続条件を指定します。(2) LEFT JOIN および INNER JOIN 構文を使用します。ほとんどの SQL 言語は両方の構文を受け入れますが、特に内部結合を実行する場合は後者の方が推奨されます。
従来の構文: 外部結合の曖昧さ
従来の構文 (FROM 句でテーブルをリストする) は、同じクエリ内で INNER JOIN と OUTER JOIN の両方を使用する場合、曖昧になりがちです。次の例を考えてみましょう:
<code class="language-sql">SELECT * FROM Company, Department, Employee WHERE Company.ID *= Department.CompanyID AND Department.ID = Employee.DepartmentID</code>
このクエリは、部門のない会社も含め、企業とその部門および従業員を取得するように設計されています。ただし、WHERE 句で内部結合と外部結合の両方を指定すると、あいまいさが発生します。クエリ オプティマイザーのロジックとデータベース エンジンの設定によっては、部門が欠落している企業がクエリから除外され、結果が不正確になる場合があります。
現代文法: 明快さと制御
LEFT JOIN と INNER JOIN を使用する最新の構文では、この曖昧さが解消されています。結合条件を 1 行で指定することで、テーブルの照合方法を明示的に制御できます。上記の例では、最新の構文を使用することでこの問題が解決されます。
<code class="language-sql">SELECT * FROM Company LEFT JOIN ( Department INNER JOIN Employee ON Department.ID = Employee.DepartmentID ) ON Company.ID = Department.CompanyID</code>
上記のクエリ内:
その他の利点
曖昧さの解消に加えて、最新の構文には次のような利点もあります。
従来の構文の廃止
最新の構文の利点により、一部のベンダー (Microsoft など) は、データベース ソフトウェアの新しいバージョンで従来の外部結合構文 (WHERE 句を使用) を廃止しました。
以上がFROM 句の左結合と複数のテーブル: 最新の SQL 構文を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。