0

尊敬的用户,

我一张名为 Employee 的表如下

EmpId | EmpName | ManagerId
 1        Smith    10
 2        John     11
 10       Ted       2
 11       Lowson    1  

每个员工都有一个经理。每个经理都是员工。

现在,我想编写一个查询,以便所有员工姓名及其经理姓名。

我试过这样的东西>>>

select a.EmpName,b.EmpName from Employee a,b where b.ManagerId=a.EmpId

但失败了。

请指导我。

4

6 回答 6

2

试试这个 ::

select 
t1.EmpName as EmoName, t2.EmpName as ManagerName
from   Employee t1 
LEFT join Employee t2 on t1.ManagerId = t2.EmpId
于 2012-12-20T12:20:25.910 回答
2

试试这个,,

select 
t1.EmpName as EmoName, t2.EmpName as ManagerName
from   Employee t1 
LEFT join Employee t2 on t1.ManagerId = t2.EmpId
于 2012-12-20T12:23:14.927 回答
0

听起来像家庭作业:

您的陈述错过了该FROM条款。你应该继续阅读JOINs。您必须将表连接到自身才能为每个员工获取经理。另一个提示(因为在那一点上所有其他答案都失败了):你需要一个LEFT JOIN

于 2012-12-20T12:19:21.410 回答
0

在其最基本的...

select emp.EmpName, mgr.EmpName
from Employee emp, Employee mgr
where emp.ManagerId = mgr.EmpId

您很可能需要比这更复杂的东西来掩盖例如没有经理的员工,但这个查询对您来说是一个开始。

于 2012-12-20T12:20:26.330 回答
0
select 
 group_concat(t2.EmpName SEPARATOR ',') AS empName,t1.ManagerId from 
  Employee t1 join Employee t2 on t1.ManagerId = t2.EmpId
  where t1.ManagerId = 0
 group by t1.ManagerId

你会得到结果

EmpName (Lowson,Td,Jon) 经理 (MangerName)

所以结果只会在一行中

于 2012-12-20T12:23:20.017 回答
0

试试这个你错过了什么

select a.EmpName,b.EmpName from Employee a, Employee b where b.ManagerId=a.EmpId
于 2012-12-20T12:37:08.803 回答