oracle树形结构查询方法


现有类别表如下:

  create table TBC_TM_CATEGORY (

  CATEGORY_ID NVARCHAR2(50) not null,

  SUPERIOR_ID NVARCHAR2(50) not null,

  CATEGORY_NAME NVARCHAR2(50) not null,

  constraint PK_TBC_TM_CATEGORY primary key (CATEGORY_ID)

  )

  数据如下:

  Insert into TBC_TM_CATEGORY

  (CATEGORY_ID, SUPERIOR_ID, CATEGORY_NAME)

  Values

  ('191', '0', '吊索类');

  Insert into TBC_TM_CATEGORY

  (CATEGORY_ID, SUPERIOR_ID, CATEGORY_NAME)

  Values

  ('0', '0', '工属具类别');

  Insert into TBC_TM_CATEGORY

  (CATEGORY_ID, SUPERIOR_ID, CATEGORY_NAME)

  Values

  ('791', '191', '扳手');

  Insert into TBC_TM_CATEGORY

  (CATEGORY_ID, SUPERIOR_ID, CATEGORY_NAME)

  Values

  ('1896', '791', '活动扳手');

  希望得到的查询结果如下:

  CATEGORY_ID, SUPERIOR_ID, CATEGORY_NAME, path

  191 0 吊索类 工属具类别\吊索类

  0 0 工属具类别 工属具类别

  791 191 扳手 工属具类别\吊索类\扳手

  1896 791 活动扳手 工属具类别\吊索类\扳手\活动扳手

  请高人指点!如遇正解不差分!

  数据修改1,

  update TBC_TM_CATEGORY set superior_id=' ' where category_id = '0';

  category_id='0'对应的SUPERIOR_ID不能为'0',否则逻辑上混乱,请楼主思考一下:

  SQL语句如下:

  select

  CATEGORY_ID , SUPERIOR_ID , CATEGORY_NAME,

  SYS_CONNECT_BY_PATH(CATEGORY_NAME,'\') path

  from TBC_TM_CATEGORY

  start with superior_id=' '

  connect by prior category_id=superior_id


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3