クロス結合を使用する

完了

クロス結合は、単なる 2 つのテーブルのデカルト積です。 ANSI SQL-89 構文を使用すると、2 つのテーブルを接続するフィルターを無効にするだけでクロス結合を作成できます。 ANSI-92 構文を使用する場合は、少し複雑になりますが、その方が好都合です。一般的に、クロス結合は通常は望ましくないためです。 ANSI-92 構文では、意図せずにクロス結合を使用する可能性は非常に低くなります。

デカルト積を明示的に作成するには、CROSS JOIN 演算子を使用します。

この操作では、入力行の可能なすべての組み合わせを含む結果セットが作成されます。

SELECT <select_list>
FROM table1 AS t1
CROSS JOIN table2 AS t2;

この結果は通常は望ましい出力ではありませんが、明示的な CROSS JOIN を記述する場合の実用的な用途がいくつかあります。

  • 範囲内の可能な値ごとに 1 行を含む、数値のテーブルを作成する。
  • テスト用に大量のデータを生成する。 わずか 100 行のテーブルでも、それ自体にクロス結合されると、ユーザーによる作業はほとんど必要なく、10,000 出力行を簡単に生成できます。

CROSS JOIN 構文

CROSS JOIN を使用してクエリを記述する場合は、次のガイドラインを考慮してください。

  • 実行される行の一致はないので、ON 句は使用されません (CROSS JOIN で ON 句を使用するとエラーになります)。
  • ANSI SQL-92 構文を使用するには、入力テーブル名を CROSS JOIN 演算子で分離します。

次のクエリは、CROSS JOIN を使用して従業員と製品のすべての組み合わせを作成する例です。

SELECT emp.FirstName, prd.Name
FROM HR.Employee AS emp
CROSS JOIN Production.Product AS prd;