17,089
社区成员
发帖
与我相关
我的任务
分享
SQL> select C.CATEGORY_ID, C.SUPERIOR_ID, C.CATEGORY_NAME, C.PATH from
2 (
3 select * from
4 (
5 select level lv, CATEGORY_ID, SUPERIOR_ID, CATEGORY_NAME,
6 ltrim(sys_connect_by_path(CATEGORY_NAME,'/') , '/') PATH from TBC_TM_CATEGORY
7 connect by nocycle prior SUPERIOR_ID = CATEGORY_ID
8 ) B
9 where (CATEGORY_ID,lv) in
10 (
11 select A.CATEGORY_ID,max(A.lv) from (
12 select level lv, CATEGORY_ID, SUPERIOR_ID, CATEGORY_NAME,
13 ltrim(sys_connect_by_path(CATEGORY_NAME,'/') , '/') from TBC_TM_CATEGORY
14 connect by nocycle prior SUPERIOR_ID = CATEGORY_ID
15 )A
16 group by A.CATEGORY_ID
17 )
18 ) C
19 ;
CATEGORY_ID SUPERIOR_ID CATEGORY_NAME PATH
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- --------------------------------------------------------------------------------
0 0 工属具类别 工属具类别
1896 791 活动扳手 活动扳手
791 191 扳手 活动扳手/扳手
191 0 吊索类 活动扳手/扳手/吊索类
SQL>
update TBC_TM_CATEGORY set category_id=1 where category_id=0;
select SYS_CONNECT_BY_PATH(category_name,'>') from TBC_TM_CATEGORY
start with superior_id=0
connect by prior category_id=superior_id
/*
SYS_CONNECT_BY_PATH(CATEGORY_N
>吊索类
>吊索类>扳手
>吊索类>扳手>活动扳手
>工属具类别*/