这条SQL该怎么写?
表结构如下:部门表
部门ID    上级ID    部门     部门负责人     备注
1000                  XXX公司   张三         
1001       1000    销售部    李四
1002       1000    技术部    王二
1003       1002    开发组    小三
1004       1002    维护组    小四
1005       1000     财务部    赵五
XXX公司是部门的最上级,下面有销售部和技术部两部门,而技术部下面又有开发组和维护组两下属部门(实际情况肯定部门更多)
我现在要的到技术部以及次部门下属部门的所有记录,该怎么些?
要的结果如下:
1002       1000    技术部    王二
1003       1002    开发组    小三
1002       1002    维护组    小四数据库是10G  XE

解决方案 »

  1.   

    select *from 部门表 where 部门='技术部' or 上级ID in (select 部门ID from 表 where 部门='技术部')
      

  2.   

    select * from 部门表 start with  部门='XXX公司' connect by prior 部门=上级ID
      

  3.   

    select * 
        from 部门表
     connect by prior 部门ID=上级ID
       start with 部门表.部门='技术部'这是自连接的最简单的写法,如果有什么条件可在from后加上where条件.
      

  4.   

    select * 
    from 部门表 
    where 部门='技术部' 
    or 上级ID>(select max(b.上级ID) from 部门表 b where b.部门='技术部')
      

  5.   

    试试
    start with 
    connect by 
    应该可以解决你的问题.
      

  6.   

    select * from tablename
    start with 部门ID='1002' 
    connect by  prior 部门ID= 上级ID可以结帖了.
    /