部门表TebleDept
DeptID DeptName,UpDept
员工表TableUser
UserID,UserName,DeptID
如A部门的 5个员工,又有100个子部门
每个部门又有各自的员工和子部门我想取其中的一个部门有员工的UserID这类的(包括本部门的直接员工ID和子部门的所有员工ID)有什么好方面呢
用delphi 如何实现呢

解决方案 »

  1.   

    select * from tableuser where deptid in (select DeptID from tabledept where deptname = 'A')
      

  2.   

    select * from 
    (select username,deptid from tableuser a join tabledept b 
    on a.deptid=b.deptid
    where b.deptid in(select deptid from tabledept where deptname='部门'))
    union all 
    (select username,deptid from tableuser 
    where deptid in(select deptid from tabledept where deptname='部门'))c
      

  3.   

    如果部门确认只有两级的话(也就是子部门不会再有子部门),你可以这样实现:
    select * from tableuser where deptid in (select DeptID from tabledept where DeptID = 'XXXXX' or UpDept = 'XXXXX')
    当然,你得保证在部门信息表里你的UpDept是与上次部门有关联的。
      

  4.   

    可以采用 ** *** ***** 的部门编码方案
    如一组部门业务部 01
          下级部门 业务一组 01001
                 下级部门
                        业务一班 010010001
                        业务二班 010010002
                   业务二组 01002
    如查询业务部门的员工“select TableUser where Deptid Like ''01%'''
    如查询业务一组的员工 “select TableUser where Deptid Like ''01001%'''