Ответ
CROSS JOIN — это оператор SQL, который возвращает декартово произведение двух таблиц. Каждая строка из левой таблицы соединяется с каждой строкой из правой таблицы.
Синтаксис и результат:
-- Явный синтаксис
SELECT *
FROM employees
CROSS JOIN departments;
-- Неявный синтаксис (через запятую)
SELECT *
FROM employees, departments;
Если в таблице employees 3 строки, а в departments — 4, то результат CROSS JOIN будет содержать *3 4 = 12 строк**.
Когда используется (практические примеры):
- Генерация всех возможных комбинаций: Например, для создания полного набора тестовых данных или сетки дат и продуктов.
-- Генерация всех комбинаций размеров и цветов SELECT sizes.size, colors.color FROM (VALUES ('S'), ('M'), ('L')) AS sizes(size) CROSS JOIN (VALUES ('Red'), ('Blue')) AS colors(color); - Расчёт агрегатов по нескольким измерениям перед группировкой.
Важное предупреждение: Используйте CROSS JOIN с осторожностью. Соединение больших таблиц может мгновенно создать огромный результирующий набор (миллионы или миллиарды строк), что негативно скажется на производительности. В большинстве сценариев нужны осмысленные соединения с условием (ON или WHERE), такие как INNER JOIN или LEFT JOIN.