表1:groupgroup_id     name
-----------------------------------------
1            公安局
2            公安局政治科
3            公安局人事科
4            公安局政治科分部A
5            公安局政治科分部B
表2:orggroup_id      orglevel
----------------------------------------
1              1
2              2
3              2
4              3
5              3
表3: orgtoorg
--------------------------------------
fromid     toid
1           2
1           3
2           4
2           5
查询显示的结果是:公安局
公安局 > 公安局政治科
公安局 > 公安局政治科 > 公安局政治科分部A
公安局 > 公安局政治科 > 公安局政治科分部B
公安局 > 公安局人事科

解决方案 »

  1.   

    可以实现,我已经搞出来了呵呵
    SELECT A.GROUP_ID, SUBSTR(SYS_CONNECT_BY_PATH(A.NAME, ' > '), 4) PATH
      FROM (SELECT T1.GROUP_ID,
                   T1.ORGLEVEL,
                   T2.NAME,
                   T3.FROMID,
                   T1.GROUP_ID TOID
              FROM ORG T1, GROUP1 T2, ORGTOORG T3
             WHERE T1.GROUP_ID = T2.GROUP_ID
               AND T1.GROUP_ID = T3.TOID(+)) A
    CONNECT BY PRIOR A.TOID = A.FROMID
     START WITH A.ORGLEVEL = 1
     ORDER BY A.ORGLEVEL, A.NAME
      

  2.   

    3楼的SQL文是不是有问题?