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;Этот вариант использует неявное декартово произведение.