字段如下:菜单ID,菜单名称,父级菜单ID。1 根目录 0
2 第一级A 1
3 第一级B 1
4 第二级A 2
5 第二级B 2
6 第三级A 4
7 第三级B 5
请问如何取成这样的行?--》根目录
--》根目录 --》第一级A
--》根目录 --》第一级A --》第二级A
--》根目录 --》第一级A --》第二级A --》第三级A
--》根目录 --》第一级A --》第二级B
--》根目录 --》第一级A --》第二级B --》第三级B
--》根目录 --》第一级B
2 第一级A 1
3 第一级B 1
4 第二级A 2
5 第二级B 2
6 第三级A 4
7 第三级B 5
请问如何取成这样的行?--》根目录
--》根目录 --》第一级A
--》根目录 --》第一级A --》第二级A
--》根目录 --》第一级A --》第二级A --》第三级A
--》根目录 --》第一级A --》第二级B
--》根目录 --》第一级A --》第二级B --》第三级B
--》根目录 --》第一级B
select 1 cid ,'根目录' con, 0 pid from dual union all
select 2 ,'第一级A', 1 from dual union all
select 3 ,'第一级B', 1 from dual union all
select 4 ,'第二级A', 2 from dual union all
select 5 ,'第二级B', 2 from dual union all
select 6 ,'第三级A', 4 from dual union all
select 7 ,'第三级B', 5 from dual )
select sys_connect_by_path(con,'--》')
from tb
start with pid=0
connect by prior cid = pid
select SYS_CONNECT_BY_PATH(菜单名称, '--》') "Path"
from 表
start with 父级菜单ID = '0'
connect by PRIOR 菜单ID = 父级菜单ID
採用sys_connect_by_path 函數可得到結果 後面還要用 connect by
select a.*,sys_connect_by_path(NAME,'->'),level from xf_dept a start with PAREDEPTID=0 connect by prior id=PAREDEPTID 生產部 ->生產部
生產部1_1 ->生產部->生產部1_1
生產部1_1_1 ->生產部->生產部1_1->生產部1_1_1
生產部1_1_2 ->生產部->生產部1_1->生產部1_1_2
生產部1_2 ->生產部->生產部1_2
生產部1_2_1 ->生產部->生產部1_2_1
生產部1_2_2 ->生產部->生產部1_2_2