是否可以在没有光标的情况下编写此查询

时间:2014-11-20 16:13:05

标签: mysql

我正在使用mysql数据库 部门的架构是

Department Table

Deptid     DeptName
1          CEO
2          HR
3          IT
4          Dev
5          QA

Employee table
Empid    EmpName    managerid   deptid
1        E1                     1
2        E2         1           2
3        E3         1           3
4        E4         3           4
5        E5         4           4
6        E6         4           4
7        E7         3           5
8        E8         7           5
9        E9         7           5

我需要输出

deptid  parentdept  count
1                   1
2       1           1
3       1           1
4       3           3
5       3           3

父母部门是属于员工经理的部门。 这意味着IT部门首席执行官是IT和人力资源部门的主管部门,因为IT和人力资源经理向CEO部门经理报告。 这意味着部门IT部门是Dev和QA的主管部门,因为DEV和QA经理向IT部门经理报告。

  deptid  parentdept   count
    CEO                   1
    HR       CEO          1
    IT       CEO          1
    DEV      IT           3
    QA       IT           3

Tree representation of it is
                       CEO-(deptid 1)E1
HR-(deptid 2)E2                               IT-(deptid 3)E3
                         DEV-(deptid 4)E4                              QA(deptid 5)E7
                  E5-(deptid 4)   E6-(deptid 4)           E8-(deptid 5)   E9-(deptid 5)

1 个答案:

答案 0 :(得分:2)

我认为经理人不应该与你描述的同一部门行中的任何empid相等。

select A.deptid,B.parentdept,A.count from (select deptid,
count(*) as count from Employee group by deptid) as A 
left join 
(select t1.deptid, t3.deptid as parentdept from Employee t1,Employee t3 where t1.managerid not
   in (select Empid from Employee t2 where t2.deptid=t1.deptid) 
   and t1.managerid=t3.empid) as B 
on A.deptid=B.deptid;

如果我错过了逻辑中的某些内容,请提前道歉。