首页 文章

SQL-使用一个元组中的值从另一个元组中获取值

提问于
浏览
2

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

Fname,Lname,ssn(主键),薪水,主管ssn,部门名称 .

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

从员工中选择fname,salary,superssn,其中departmentname ='Research';

现在这只给了我员工主管的ssn,而不是主管的名字 . 我知道我必须将员工的超级人员与拥有相同ssn的另一名员工进行比较,并获得其他员工的姓名,因为他是他的主管,但我不知道如何在同一命令中实现这一点 .

2 回答

  • 2

    你需要一个自我加入:

    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 .

  • 1

    您需要连接到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';
    

相关问题