我有一个oracle数据库,其中包含员工编号,员工主管的员工编号,员工姓名等数据。
我希望从这个表格中提取数据,这样如果我选择员工的姓名和员工的主管员工编号,那么我该如何在同一个查询中列出主管的名字? ?
例如:
emp_number ---- emp_name ---- emp_supervisor_emp_number
100 ............ abc ............321
200 ............ xyz ............920
321 ............ pqr ............454
920 ............ klk ............344
现在我希望能够像这样提取数据(1级):
100............ abc ............321 ..... pqr
200............ xyz ............920 ..... klk
答案 0 :(得分:0)
自我加入是一种选择:
SQL> with emp (emp_number, emp_name, emp_supervisor) as
2 (select 100, 'abc', 321 from dual union
3 select 200, 'xyz', 920 from dual union
4 select 321, 'pqr', 454 from dual union
5 select 920, 'klk', 344 from dual
6 )
7 select e1.emp_number,
8 e1.emp_name,
9 e1.emp_supervisor,
10 e2.emp_name
11 from emp e1 join emp e2 on e2.emp_number = e1.emp_supervisor
12 order by e1.emp_number;
EMP_NUMBER EMP EMP_SUPERVISOR EMP
---------- --- -------------- ---
100 abc 321 pqr
200 xyz 920 klk
SQL>
答案 1 :(得分:0)
使用左连接和“NULL”管理的另一个自连接选项。
select a.empid,
a.name,
b.empid,
b.name
from em1 a,
em1 b
where a.suid = b.empid(+)
and b.empid is not null
EMPID NAME EMPID NAME
100 abc 321 pqr
200 xyz 920 klk