CROSS JOIN в PostgreSQL: декартово произведение двух таблиц

CROSS JOIN в PostgreSQL выполняет декартово произведение двух таблиц, создавая все возможные комбинации строк. Каждая строка первой таблицы объединяется с каждой строкой второй таблицы.

Использование CROSS JOIN

Пример декартового произведения таблиц users и orders:

SELECT users.id, users.name, orders.id AS order_id, orders.total
FROM users
CROSS JOIN orders;

Этот запрос вернет все возможные сочетания пользователей и заказов, независимо от наличия связи между ними.

Фильтрация результатов

Использование CROSS JOIN с WHERE для ограничения количества строк:

SELECT users.id, users.name, orders.id AS order_id, orders.total
FROM users
CROSS JOIN orders
WHERE users.id = orders.user_id;

Этот запрос эквивалентен INNER JOIN, так как он фильтрует только совпадающие строки.

Использование CROSS JOIN без явного указания

Альтернативный синтаксис, создающий тот же результат:

SELECT users.id, users.name, orders.id AS order_id, orders.total
FROM users, orders;

Этот вариант использует неявное декартово произведение.