Нужно сгенерировать матрицу A/B-тестов: 4 варианта заголовка × 3 варианта кнопки × 2 цвета фона. Каждый параметр хранится в отдельной таблице. Как получить все 24 комбинации?

AИспользовать INNER JOIN без условия ON: соединение создаст все возможные комбинации строк трёх таблиц
BИспользовать UNION ALL между таблицами параметров: вертикальное объединение строк в один общий набор
CИспользовать FULL OUTER JOIN без условия ON: соединение создаёт комбинации с обработкой NULL по обеим сторонам
DИспользовать CROSS JOIN между таблицами параметров: соединение явно создаст все возможные комбинации строк
Правильный ответ. CROSS JOIN двух и более таблиц генерирует полное декартово произведение: 4 × 3 × 2 = 24 строки.

Разбор

Цепочка CROSS JOIN: SELECT * FROM titles CROSS JOIN buttons CROSS JOIN colors создаст 24 строки — все комбинации параметров. Это законное применение декартова произведения: количество результатов контролируемо и нужно именно все сочетания. INNER JOIN без ON тоже даёт декартово произведение, но CROSS JOIN явно показывает намерение и читается лучше. UNION ALL складывает строки вертикально, а FULL OUTER JOIN без условия объединяет строки, а не перемножает их.

Проверь себя · 1/3разбор после ответа
В таблицах orders и users есть одноимённые столбцы: user_id, updated_at, status. Аналитик пишет SELECT * FROM orders NATURAL JOIN users. Что произойдёт?
Тренировать SQL в Telegram

Ещё вопросы по теме «JOIN и операции множеств»