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



相关阅读:
HTML教程:marquee标签实现滚动效果
CSS教程:15个必须阅读的CSS入门文章
诺基亚 XHTML 常见问答
8个优秀的CSS实现数据图表的应用实例
关于clientHeight、offsetHeight、scrollHeight
如何在php中修补XSS漏洞
测试SQL Server业务规则链接方法
航天联志WEB服务器系统解决方案
Web服务器控件:ImageButton控件
关于Linux操作系统Fork的使用
JS小框架 fly javascript framework
CSS教程:创建性感的CSS样式表
提交页面的定位--scrollIntoView的用法
Linux系统下交换分区和交换文件的含义
快速导航

Copyright © 2016 phpStudy | 皖ICP备18014864号-4