В отчёте нужно вывести всех пользователей и количество их заказов, включая тех, у кого заказов нет. Какой тип соединения между users и orders по user_id нужен?

AINNER JOIN users и orders по user_id сохраняет лишь пользователей с заказами
BLEFT JOIN users и orders по user_id сохраняет всех пользователей из users
CRIGHT JOIN users и orders по user_id сохраняет лишь заказы и теряет пользователей без них
DUNION таблиц users и orders объединяет два списка строк без сопоставления по ключу
Правильный ответ. LEFT JOIN сохраняет все строки из левой таблицы и подставляет NULL для отсутствующих совпадений справа.

Разбор

INNER JOIN вернёт только пользователей, у которых нашлись заказы, и потеряет тех, у кого их нет. Для аналитических отчётов часто важно показать и пользователей без заказов, чтобы их метрика была равна нулю. Для этого берут таблицу users слева и делают LEFT JOIN к таблице orders по user_id. RIGHT JOIN решает обратную задачу, а UNION объединяет результаты двух запросов и не выполняет сопоставление строк по ключу.

Можно заниматься бесплатно

Готовим вопросы…

Три вопроса по теме этой страницы, с объяснениями.

Продолжить в браузере

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