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;Связанные термины
Анекдоты по теме
Таблица Users пишет таблице Orders: — Ты забыл про меня. Мы не связаны. Orders: — У тебя нет внешнего ключа ко мне. Users: — Значит, я буду NULL в твоей жизни. DBA: — Это LEFT JOIN, успокойтесь.
— Что такое N+1 проблема? — Загрузил список из 100 пользователей — 1 запрос. Потом для каждого загрузил заказы — 100 запросов. Итого 101 запрос вместо 1 с JOIN. — Как исправить? — prefetch_related / eager loading / JOIN.
— Почему JOIN любят, но боятся? — Потому что соединить две таблицы легко. А четыре — уже сложно. А восемь — ты уже не программист, а жонглёр.