咨询一个问题:比如我的表结构和数据如下:
ID CODE TEXT PARENT_ID
1   1   单位    0
2   2   子单位1 1
3   3   子单位2 2
子父节点依赖ID = PARENT_ID关联,我想实现查询出的结果如下:
1  单位 2  子单位1 3 子单位2
即若单位有5层,则都显示在一行中,依照层次代码和汉字来显示。不知道怎么实现,希望高手帮忙!
多谢多谢

解决方案 »

  1.   

    你的权限不够吧,这是为DBA提供的
      

  2.   

    有没有人帮忙给个SQL语句啊,拜托了,分不够再加,友情支援啊
      

  3.   

    那我的问题是假如表数据是这样的
           ID       CODE TEXT        PARENT_ID
    ---------- ---------- ---------- ----------
             1          1 单位                0
             2          2 子单位1             1
             3          3 子单位2             1
             4          4 子单位3             2那转换后的结构是怎样呢?
      

  4.   

    从Root往树末梢递归SELECT  ID,CODE,TEXT,PARENT_ID FROM TABLE t
          START WITH PARENT_ID = '0'
          CONNECT BY  PRIOR ID=PARENT_ID
    从末梢往树ROOT递归SELECT  ID,CODE,TEXT,PARENT_ID FROM TABLE t
          START WITH PARENT_ID = '4'
          CONNECT BY  PRIOR PARENT_ID=ID
      

  5.   

    可能会对你有用,关于tree结构的sql语句。共享~~~
    http://topic.csdn.net/u/20080506/10/6a32ded4-0b37-456c-8fd6-574c88233f61.html
      

  6.   

    在 ORACLE中这个功能很方便,直接用函数就行了,如果是DB2就需要自己构造了,现在给出ORACLE算法:CREATE TABLE TEST (ID INT,CODE INT, TEXT VARCHAR2(10),PARENT_ID INT);
    INSERT INTO TEST VALUES(1,1,'单位',0);
    INSERT INTO TEST VALUES(2,2,'子单位1',1);
    INSERT INTO TEST VALUES(3,3,'子单位2',2);
    INSERT INTO TEST VALUES(4,4,'子单位3',3);
    INSERT INTO TEST VALUES(5,5,'子单位4',4);
    COMMIT;SELECT CONNECT_BY_ISLEAF ISLEAF, SYS_CONNECT_BY_PATH(TEXT,',') TEXT
    FROM TEST A
    WHERE CONNECT_BY_ISLEAF=1
    START WITH PARENT_ID=0
    CONNECT BY PRIOR A.ID=A.PARENT_ID
    ;输出:
        ISLEAF TEXT
    ---------- --------------------------------------------------------------------------------
             1 ,单位,子单位1,子单位2,子单位3,子单位4你自己去掉','就OK了如果需要DB2算法,再开口好了!