JOINСредний
CROSS JOIN
Декартово произведение двух таблиц: каждая строка первой соединяется с каждой строкой второй.
Синтаксис
SELECT ... FROM t1 CROSS JOIN t2;Объяснение
CROSS JOIN возвращает N × M строк. Без условия ON.
Опасен с большими таблицами: 1000 × 1000 = миллион строк. Используется для генерации комбинаций — например, все возможные пары товаров и цветов.
Пример
-- Все комбинации размеров и цветов
SELECT s.name AS size, c.name AS color
FROM sizes s
CROSS JOIN colors c
ORDER BY s.name, c.name;Связанные термины
Анекдоты по теме
Встречаются таблица Clients и таблица Orders. Она ему: — Ты меня не найдёшь, я тебе не по ключу! Он отвечает: — А я тебя через LEFT JOIN найду. Ты у меня всё равно NULL будешь, но строчка останется.
Начинающий: — Я написал JOIN, а строк стало больше, чем было! Опытный: — Поздравляю. Ты сделал CROSS JOIN. Забыл ON.
— Какая разница между INNER JOIN и дружбой? — INNER JOIN рвётся, если нет совпадений. А дружба — LEFT JOIN. Даже когда вы не совпадаете, ты всё равно остаёшься в таблице.