在同一个数据库中查找数据

时间:2018-02-27 20:45:07

标签: database oracle join

我有一个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

2 个答案:

答案 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