Оператор SQL CROSS JOIN


Оператор SQL CROSS JOIN формирует таблицу перекрестным соединением (декартовым произведением) двух таблиц. При использовании оператора SQL CROSS JOIN каждая строка левой таблицы сцепляется с каждой строкой правой таблицы. В результате получается таблица со всеми возможными сочетаниями строк обеих таблиц.

Оператор SQL CROSS JOIN имеет следующий синтаксис:

SELECT
    column_names [,... n]
FROM
    Table_1 CROSS JOIN Table_2

Обратите внимание, что в операторе за ненадобностью отсутствует условие (ON).


Примеры оператора SQL CROSS JOIN. Имеются две таблицы:

Authors — содержит в себе информацию об авторах книг:

AuthorID AuthorName
1 Bruce Eckel
2 Robert Lafore
3 Andrew Tanenbaum

Books — содержит в себе информацию о названии книг:

BookID BookName
3 Modern Operating System
1 Thinking in Java
3 Computer Architecture
4 Programming in Scala

В таблице Books поле BookID являются внешним ключом и ссылаются на таблицу Authors.

Пример 1. Произвести декартово произведение обеих таблиц с помощью оператора SQL CROSS JOIN:

SELECT *
FROM Authors CROSS JOIN Books

Результирующая таблица будет выглядеть следующим образом:

Authors.AuthorID Authors.AuthorName Books.BookID Books.BookName
1 Bruce Eckel 3 Modern Operating System
1 Bruce Eckel 1 Thinking in Java
1 Bruce Eckel 3 Computer Architecture
1 Bruce Eckel 4 Programming in Scala
2 Robert Lafore 3 Modern Operating System
2 Robert Lafore 1 Thinking in Java
2 Robert Lafore 3 Computer Architecture
2 Robert Lafore 4 Programming in Scala
3 Andrew Tanenbaum 3 Modern Operating System
3 Andrew Tanenbaum 1 Thinking in Java
3 Andrew Tanenbaum 3 Computer Architecture
3 Andrew Tanenbaum 4 Programming in Scala