SELECT Sql Query连接同一个表两次

时间:2012-03-21 10:08:07

标签: sql oracle

我有两张桌子如下 表1:emp

Emp ID   SupervisorID
001      005
002      001
003      004
004      005

表2:empdetails

ID       Name
001      John
002      Krish
003      Ramesh
004      Smith
005      Ranga

我需要一个sql查询来显示表1中两个列Employee及其主管的ID名称,如下所示

结果:

Emp     Supervisor
John    ranga
Krish   John
Ramesh  Smith
Smith   prasad

2 个答案:

答案 0 :(得分:3)

尝试以下查询:

SELECT  ed1.Name AS 'ID',ed2.Name AS 'Name'  FROM emp e 
       JOIN empdetails ed1 ON e.EmpID=ed1.ID 
       JOIN empdetails ed2 ON e.SupervisorID=ed2.ID 

它将从emp表中获取结果并尝试与empdetails加入....

答案 1 :(得分:1)

将同一个表连接两次非常简单:只需使用不同的表别名来区分实例。在下面的示例中,我使用外部联接来获取主管名称,因为每个员工可能没有主管(层次结构中应该有一个人,最终的老板,没有主管)。

select ed.name  as emp_name
       , sup.name as supervisor
from emp e         
    inner join empdetails ed on ( e.id = ed.id )
    left join empdetails sup on ( e.supervisorid = sup.id )