我有两张桌子如下 表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
答案 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 )