简单查询以获得准确的结果

时间:2012-12-20 12:16:49

标签: mysql sql oledb

尊敬的用户

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

但失败了。

请指导我。

6 个答案:

答案 0 :(得分:2)

试试这个::

select 
t1.EmpName as EmoName, t2.EmpName as ManagerName
from   Employee t1 
LEFT join Employee t2 on t1.ManagerId = t2.EmpId

答案 1 :(得分:2)

试试这个,

select 
t1.EmpName as EmoName, t2.EmpName as ManagerName
from   Employee t1 
LEFT join Employee t2 on t1.ManagerId = t2.EmpId

答案 2 :(得分:0)

听起来像是家庭作业:

您的陈述错过了FROM条款。你应该阅读JOINs。您必须加入表格才能获得每位员工的经理。另一个提示(因为所有其他答案都失败了):您需要LEFT JOIN

答案 3 :(得分:0)

最基本......

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

你很可能需要更复杂的东西,以便覆盖例如没有经理的员工,但这个问题是你的开始。

答案 4 :(得分: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)

所以结果只会在一行中

答案 5 :(得分:0)

试试这个你错过了什么

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