Нужно вывести клиентов из таблицы Customers, у которых есть хотя бы один заказ в таблице Orders. Какой запрос выполнит это корректно?

Корректный запрос для вывода клиентов из таблицы Customers, у которых есть хотя бы один заказ в таблице Orders, следующий:

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

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

Корректный запрос для вывода клиентов из таблицы Customers, у которых есть хотя бы один заказ в таблице Orders, следующий:

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

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

Условие

Нужно вывести клиентов из таблицы Customers, у которых есть хотя бы один заказ в таблице Orders. Какой запрос выполнит это корректно?

SELECT * FROM Customers WHERE id = (SELECT customer_id FROM Orders);

SELECT * FROM Customers c JOIN Orders o ON c.id = o.customer_id;

SELECT * FROM Customers, Orders WHERE Customers.id = Orders.id;

SELECT * FROM Customers WHERE id IN (SELECT customer_id FROM Orders);

Ответ

Корректный запрос для вывода клиентов из таблицы Customers, у которых есть хотя бы один заказ в таблице Orders, следующий:

SELECT * FROM Customers WHERE id IN (SELECT customer_id FROM Orders);

Объяснение:

  • Первый вариант с = не подходит, так как подзапрос возвращает множество значений, а = ожидает одно.
  • Второй вариант с JOIN вернёт клиентов с заказами, но при этом дублирует клиентов, если у них несколько заказов.
  • Третий вариант с WHERE Customers.id = Orders.id некорректен, так как сравниваются разные поля (id клиента и id заказа).

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

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее