Оператор 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.