如何在自关联员工表中无需手动获取SSN查询直属下属?
自关联员工表查询直接下属的解决方案
方案一:子查询嵌套
直接通过子查询自动获取Kamel Mohamed的SSN,无需手动输入:
SELECT Fname, Lname FROM employee WHERE superSSN = ( SELECT SSN FROM employee WHERE Fname = 'Kamel' AND Lname = 'Mohamed' );
子查询会先定位到Kamel Mohamed的SSN,外层查询再筛选所有直接向他汇报的员工,只返回姓名字段比SELECT *更贴合需求。
方案二:表自连接
通过将Employee表自身关联,用别名区分管理者和下属,逻辑更直观:
SELECT e.Fname, e.Lname FROM employee e JOIN employee m ON e.superSSN = m.SSN WHERE m.Fname = 'Kamel' AND m.Lname = 'Mohamed';
这里m代表管理者(manager),e代表下属员工(employee),通过JOIN关联两者的上下级关系后,直接筛选管理者姓名即可。如果后续需要同时展示管理者信息,这种方式更容易扩展。
注意事项
如果系统中存在多个同名的「Kamel Mohamed」,需要补充额外的筛选条件(比如部门ID、邮箱等)来精准定位目标管理者,避免返回错误结果。
内容的提问来源于stack exchange,提问作者Yousef
相关产品推荐
相关产品推荐

