2012-03-21 111 views
-2

我有两个表像下面 表1:EMP选择SQL查询连接在同一个表两次

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查询,以便从显示ID名称表1列为员工及其主管,如下所示结果

结果:

Emp  Supervisor 
John ranga 
Krish John 
Ramesh Smith 
Smith prasad 
+1

被编辑为使其可读。 – KingCronus 2012-03-21 10:10:55

+6

这甚至不是问题。这只是要求别人为你做。你有什么尝试?无论如何,只需查看'JOIN'下的手册即可。 – 2012-03-21 10:12:55

+1

查看查询中表格别名的用法。 – 2012-03-21 10:20:54

回答

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

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

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)