Sobes.tech
Назад к вопросам
Junior
10

Вы строите представление, которое показывает всех пользователей и, если есть, их последние заказы. Таблицы: users(id, name) и orders(id, user_id, created_at). Какой тип соединения нужно использовать, чтобы в выборку попали и те пользователи, у которых нет заказов? CROSS JOIN RIGHT JOIN INNER JOIN FULL JOIN LEFT JOIN

Компании, где спрашивали
01.tech

Ответ от нейросети

sobes.tech AI

Чтобы в выборку попали все пользователи, включая тех, у кого нет заказов, нужно использовать 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 в полях заказа.