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