从SQL中的匹配列派生列的数据

时间:2011-10-10 02:15:19

标签: sql database oracle

所以我有一张表,包括员工编号,员工姓名,主管编号。

我想运行一个查询,该查询将检索员工姓名,员工编号,主管姓名和主管人员编号。只有一名员工没有主管意味着必须显示空值。我该怎么做?我正在使用Oracle SQL Plus。我的尝试根本没用!任何帮助将不胜感激。

SELECT ename Employee, empno Emp#, super Manager#
FROM emp;

这给了我三个栏目,但说实话,我甚至不知道从哪里开始获得主管的名字。

这是为了大学,但我正在学习考试,这不是作业,所以这里没有作弊:)。

2 个答案:

答案 0 :(得分:1)

假设SupervisorNumber是返回Employee表的外键关系(它是主管记录的EmployeeNumber),那么您需要使用外连接。

在这种情况下,您需要的是left加入:

select
    e.EmployeeName,
    e.EmployeeNumber,
    s.EmployeeName as SupervisorName

from Employee e

left join Employee s on s.EmployeeNumber = e.SupervisorNumber

答案 1 :(得分:1)

以下内容应该有效,如果员工没有主管,则为空:

SELECT empGrunt.ename Employee
     , empGrunt.empno EmpNum
     , empSuper.ename SupervisorName
     , empSuper.empno SupervisorName
FROM   emp empGrunt LEFT OUTER JOIN emp empSuper 
       ON empGrunt.super = empSuper.empno