2

我有一个名为employee 的表,其中包含以下列-

Fname、Lname、ssn(主键)、薪水、主管 ssn、部门名称。

现在对于属于“研究”部门的表中的每个员工,我想输出他的姓名、薪水和他的主管的姓名。我目前拥有的是这个。

SELECT fname,salary,superssn from employee where departmentname='Research';

现在这只给了我员工主管的 ssn,而不是主管的姓名。我知道我必须将一名员工的 superssn 与另一名具有相同 ssn 的员工进行比较,并获得该员工的姓名,因为他是主管,但我不确定如何在同一命令中实现这一点。

4

2 回答 2

2

您需要连接回 emplyee 表(并且您需要一个别名来引用该表),如下所示:

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';
于 2013-10-20T14:26:50.887 回答
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。

于 2013-10-20T14:30:11.310 回答