SQLite多个子查询逻辑

SQLite多个子查询逻辑,sql,sqlite,Sql,Sqlite,问题是要求一个人写一个查询,以查找在美国一个部门工作的经理的雇员的姓名(名字、姓氏)。下面是问题的链接,以查看表 对于子查询,我在department和location表之间的location id上做了一个左连接,然后为country\u id选择“US”,并返回manager\u id 对于外部查询,我选择了Employee表,从子查询列表中选择了manager\u ID SELECT first_name, last_name FROM Employees WHER

问题是要求一个人写一个查询,以查找在美国一个部门工作的经理的雇员的姓名(名字、姓氏)。下面是问题的链接,以查看表

对于子查询,我在department和location表之间的location id上做了一个左连接,然后为country\u id选择“US”,并返回manager\u id

对于外部查询,我选择了Employee表,从子查询列表中选择了manager\u ID

    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;
使用我的代码,我没有得到正确的答案,结果与网站上显示的结果集/输出相同。 正确答案中总共有三个子查询。我不明白包含涉及employees表的子查询(最外层的子查询)的目的是什么。我知道这就是我搞砸的地方,但不明白为什么

    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')));

您需要联接所有表:

select e.first_name, e.last_name
from employees e 
inner join employees m on m.employee_id = e.manager_id 
inner join departments d on d.department_id = m.department_id
inner join locations l on l.location_id = d.location_id
where l.country_id='US'

谢谢你的回复。为什么你需要两个员工表呢?这就是我不理解的。这是一个自联接,因为列管理器id引用了表employees it self中的列employees id。