Оператор CROSS JOIN для объединения таблиц в PostgreSQL
Что такое CROSS JOIN?
Оператор CROSS JOIN позволяет выполнить перекрёстное соединение (декартово произведение) двух таблиц. Результатом работы оператора CROSS JOIN будет объединение первой строки первой таблицы, с каждой строкой второй таблицы.
Для наглядности работы оператора CROSS JOIN, ниже находится изображение, на котором показано, как происходит перекрёстное соединение таблиц. Для удобства отображения результатов, они представлены в колоночном виде, а не в построчном.
Синтаксис оператора CROSS JOIN
Оператор CROSS JOIN в отличие от других методов соединения таблиц не требует никаких условий для объединения таблиц (ON). Существует несколько способов создать перекрёстное соединение.
-- 1 вариант: при помощи оператора CROSS JOIN SELECT список_столбцов FROM таблица_1 CROSS JOIN таблица_2; -- 2 вариант: список таблиц в блоке FROM SELECT список_столбцов FROM таблица_1, таблица_2; -- 3 вариант: при помощи оператора INNER JOIN SELECT список_столбцов FROM таблица_1 INNER JOIN таблица_2 ON TRUE;
Синтетические данные для работы
Для демонстрации работы оператора CROSS JOIN потребуется создать тестовые таблицы и заполнить их данными.
-- создание таблицы table_1
create table table_1 (
symbol varchar(20)
);
insert into table_1 (symbol)
values ('A'), ('B'), ('C');
commit;
-- создание таблицы table_2
create table table_2 (
numbers integer
);
insert into table_2 (numbers)
values (1), (2), (3);
commit;
Практический пример
Выполним объединение таблиц table_1 и table_2 вышеперечисленными способами.
-- 1 вариант: при помощи оператора CROSS JOIN select * from table_1 cross join table_2; -- 2 вариант: список таблиц в блоке FROM select * from table_1, table_2; -- 3 вариант: при помощи оператора INNER JOIN select * from table_1 inner join table_2 on true;
После выполнения любого запроса, будет получен следующий результат.
Метки: CROSS JOIN, PostgreSQL.

