尊敬的用户
我有一个名为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
但失败了。
请指导我。
答案 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