#mysql #sql
#mysql #sql
Вопрос:
Я пытаюсь понять, как работает вложенный запрос, но когда я пытаюсь использовать вложенный запрос, похоже, он не работает. Я пытался, но он выдает ошибки. Уверен, что у меня есть правильный код. Любые указания на то, где я ошибся, очень ценятся.
Вот вопрос, над которым я работаю:
- Используя только вложенный запрос, отобразите OrderID, OrderDate и ShippedDate для всех заказов, отправленных сотрудниками, проживающими в США. Сортировка выходных данных по дате заказа
Вот мой вложенный запрос:
SELECT OrderID, OrderDate, ShippedDate
FROM Orders
WHERE Country =
(SELECT Country
FROM Employees
WHERE Country = 'USA');
Комментарии:
1. попробуйте изменить country= на country в
2. также вы можете попробовать другой подзапрос, поскольку существует необязательное СКАНИРОВАНИЕ ТАБЛИЦЫ для подзапроса yoru
3. Существует ли страна в таблице заказов? Если это не так, какой ключ соединяет таблицу Orders с таблицей Employees?
4. EmployeeID есть в обеих таблицах, поэтому попробовал EmployeeID вместо Country, но он вернул результаты null, что, я уверен, неверно.
5. Может быть, я в замешательстве, но разве мне не нужно использовать таблицу заказов и таблицу сотрудников для этого вопроса?
Ответ №1:
Попробуйте
SELECT OrderID, OrderDate, ShippedDate
FROM Orders
WHERE EmployeeID IN
(SELECT EmployeeID
FROM Employees
WHERE Country = 'USA');
В этом случае вы используете как EmployeeID, так и IN .
Подзапрос ищет список EmployeeID в США. Затем он использует этот список для выбора заказов, сделанных подмножеством сотрудников в США, из таблицы заказов.
Комментарии:
1. Спасибо за это. Теперь я понимаю, что вы имеете в виду.
Ответ №2:
Вы присоединяетесь к Country, когда вы должны присоединиться к EmployeeID или любому другому полю, например, ГДЕ EmployeeID (ВЫБЕРИТЕ EmployeeID …
То, как вы это делаете, соответствует США для США, что даст неверные результаты, поскольку любые две записи с США в качестве страны будут объединены.
Комментарии:
1. Спасибо за ответ.