表:
id    parent_id   name 
01               A公司
02    01         人事部
03    01         财务部
04    02         张三
05    03         李四   
现在我要取得根(A公司)下的所有记录,并且要如下格式显示, 该怎么取?A公司      人事部
A公司      财务部
A公司      张三
A公司      李四

解决方案 »

  1.   

    9i 下适用:SQL> SELECT substr(route, 2, instr(route, '/', 2) - 2) p_name, NAME
      2  FROM   (SELECT test.*, sys_connect_by_path(NAME, '/') || '/' route
      3          FROM   test
      4          START  WITH ID = '01'
      5          CONNECT BY parent_id = PRIOR ID)
      6  /P_NAME               NAME
    -------------------- --------------------
     A公司                A公司
     A公司               人事部
     A公司               张三
     A公司               财务部
     A公司               李四
      

  2.   

    改一下:SQL> SELECT substr(route, 2, instr(route, '/', 2) - 2) p_name, NAME
      2  FROM   (SELECT test.*, sys_connect_by_path(NAME, '/') || '/' route
      3          FROM   test
      4          WHERE LEVEL > 1
      5          START  WITH ID = '01'
      6          CONNECT BY parent_id = PRIOR ID)
      7  /P_NAME               NAME
    -------------------- --------------------
     A公司               人事部
     A公司               张三
     A公司               财务部
     A公司               李四
      

  3.   

    还有:SQL> SELECT substr(route, 2, instr(route, '/', 2) - 2) p_name, NAME
      2  FROM   (SELECT test.*,LEVEL, sys_connect_by_path(NAME, '/') || '/' route
      3          FROM   test
      4          WHERE LEVEL > 1
      5          START  WITH ID = '01'
      6          CONNECT BY parent_id = PRIOR ID
      7          ORDER BY LEVEL)
      8  /P_NAME               NAME
    -------------------- --------------------
     A公司               人事部
     A公司               财务部
     A公司               张三
     A公司               李四