Задача #1

Чтобы в выборку попали все пользователи, включая тех, у кого нет заказов, нужно использовать LEFT JOIN.

Короткий ответ

Что ответить на собеседовании

Чтобы в выборку попали все пользователи, включая тех, у кого нет заказов, нужно использовать LEFT JOIN.

Подробный разбор

Ответ с пояснениями

Условие

Задача #1 Какое количество записей вернет запрос с inner, left, right, full join двух таблиц при соединении по атрибуту id

t1 t2 | id | | id | |-----| |-----| | 1 | | 1 | | 2 | | 1 | | 3 | | 3 | | 0 | | 5 | | NULL| | NULL| | NULL|

inner: left: right: full outer:

Ответ

Чтобы в выборку попали все пользователи, включая тех, у кого нет заказов, нужно использовать LEFT JOIN.

Объяснение:

  • LEFT JOIN возвращает все строки из левой таблицы (users) и соответствующие строки из правой таблицы (orders). Если соответствующих заказов нет, поля из orders будут заполнены NULL.

Пример запроса:

SELECT users.id, users.name, orders.id AS order_id, orders.created_at
FROM users
LEFT JOIN orders ON users.id = orders.user_id
WHERE orders.created_at = (
    SELECT MAX(created_at) FROM orders WHERE user_id = users.id
) OR orders.id IS NULL;

Это позволит получить всех пользователей с их последними заказами, а для пользователей без заказов — NULL в полях заказа.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку