我有两个表部门和员工。部门有部门信息,每行是由deptID标识的不同部门,名称为DeptName。在每一行中都有一个DeptHeadID,它保存该部门经理的员工ID。
员工拥有员工信息,其中每一行都是由EmpID标识的不同员工,他们的名称是姓名,每行都有一个指向部门表的deptID。
我正在试图弄清楚如何列出每个部门的经理姓名和员工姓名。我可以列出经理身份证号码和员工姓名,但从经理身份证号码到经理人姓名,我很难过。
感谢您的帮助。
答案 0 :(得分:1)
与从员工到部门完全相同。
当然,如果您只使用Employee表的一个“副本”,则WHERE
子句(EmployeeId = ManagerId
)会过滤掉所有非经理的员工,因此您可能必须使用超过一份。
SELECT ....
from Employee empl1, -- Use this to get the data of the employees
Department dep, -- Join empl1 to find the employee department
Employee empl2, -- Join dep with this to get the manager data
答案 1 :(得分:0)
使用子查询
这样的事情select empname,deptname,
(select empname from Employees where empid = DeptHeadID) as Managers
from
(
select e.empname,d.deptname,d.DeptHeadID from Employees e join
Departments d on e.deptID = d.deptID
) tab
答案 2 :(得分:0)
select a.department_id,
a.manager_id,
b.employee_id,
b.first_name EmployeeName,
b.ManagerName
from (
select d.department_id,
d.manager_id
from departments d
) a
,(
select manager_id,
employee_id,
first_name,
(select first_name from employees b
where b.employee_id=a.manager_id) as ManagerName
from employees a
) b
where a.manager_id=b.manager_id
答案 3 :(得分:0)
扩展SJuan76的答案以允许直接复制粘贴:
SELECT dep.department_id,
dep.manager_id,
empl1.employee_id,
empl1.first_name EmployeeName,
empl2.first_name ManagerName
FROM Employee empl1 -- Use this to get the data of the employees
JOIN Department dep -- Join empl1 to find the employee department
ON empl1.deptID = dep.deptID
JOIN Employee empl2 -- Join dep with this to get the manager data
ON empl2.deptID = dep.manager_id
答案 4 :(得分:0)
选择e.ename MGRNAME,m.eename EMPNAME from emp e join emp m on e.empno = m.mgr;
这可能会对你有帮助。