【发布时间】:2019-04-24 21:11:26
【问题描述】:
问题是要求一个人编写一个查询来查找员工的姓名(名字、姓氏),这些员工的经理在美国的一个部门工作。这是问题的链接,查看表格,https://www.w3resource.com/sqlite-exercises/sqlite-subquery-exercise-3.php。
对于子查询,我对部门表和位置表之间的位置 ID 进行了左连接,然后我为 country_id 选择了“US”,并返回了 manager_id
对于外部查询,我选择 Employee 表,从子查询列表中选择 manager_ids。
SELECT first_name, last_name
FROM Employees
WHERE manager_id IN (SELECT manager_id
FROM Departments d LEFT JOIN Locations l ON d.location_id = l.location_id
WHERE country_id = 'US')
ORDER BY first_name;
使用我的代码,我没有得到正确的答案,结果与网站上显示的结果集/输出相同。 正确答案一共有三个子查询。我不明白包含涉及员工表的子查询(最外层子查询)的目的是什么。我知道这是我搞砸的地方,但不明白为什么。
SELECT first_name, last_name
FROM employees
WHERE manager_id IN
(SELECT employee_id
FROM employees
WHERE department_id IN
(SELECT department_id
FROM departments
WHERE location_id IN
(SELECT location_id
FROM locations
WHERE country_id='US')));
【问题讨论】: