我有一个名为employee的表,其中包含以下列 -
Fname,Lname,ssn(主键),薪水,主管ssn,部门名称。
现在,对于属于部门' Research'的表格中的每位员工,我想输出他的姓名,工资和他的主管的姓名。我现在拥有的是这个。
从员工中选择fname,salary,superssn,其中departmentname =' Research'
现在这只给了我员工主管的ssn,而不是主管的名字。我知道我必须将一名员工的超级人员与另一名拥有相同ssn的员工进行比较,并获得其他员工的姓名,因为他是他的主管,但我不确定如何实施这在同一个命令中。
答案 0 :(得分:2)
您需要连接到employee表(并且您需要一个别名来引用该表),如下所示:
SELECT employee.fname, employee.salary, supervisorlist.fname as supervisor
from employee
left join employee as supervisorlist on supervisorlist.ssn = employee.supervisorssn
where employee.departmentname='Research';
答案 1 :(得分:1)
您需要自我加入:
SELECT researcher.fname, researcher.salary, supervisor.fname
FROM employee researcher JOIN employee supervisor ON researcher.superssn = supervisor.ssn
WHERE researcher.departmentname='Research';
这为您提供了与主管/研究员ssn匹配的员工x员工的交叉产品中的所有相关配对。
如果你想在没有主管的情况下包括研究人员,那么你需要一个LEFT JOIN。