a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 175|回复: 1

[考试辅导] Oracle技术:oracle中对树形结构的查询

[复制链接]
发表于 2012-8-4 14:06:19 | 显示全部楼层 |阅读模式
现有类别表如下:   create table TBC_TM_CATEGORY (
8 p& ^' B$ t8 s' t; Z6 r9 q  k  CATEGORY_ID NVARCHAR2(50) not null,
: d. t9 O8 M$ Y* c& `0 J  SUPERIOR_ID NVARCHAR2(50) not null,
2 f# ?" W* j3 ?: d4 z2 J  [/ m) ^  CATEGORY_NAME NVARCHAR2(50) not null," I, Y! j, `$ h+ @- ~7 _
  constraint PK_TBC_TM_CATEGORY primary key (CATEGORY_ID)$ F9 d, V: k/ ]- @  [  B+ E8 Z6 t
  )
0 O: a  \: w% ~$ r6 V  数据如下:
8 u# H- Y% `1 j6 E  Insert into TBC_TM_CATEGORY5 p* w! ~  [+ ]1 h% {% U+ U
  (CATEGORY_ID, SUPERIOR_ID, CATEGORY_NAME), M( x! {" \- Y7 i* |; Y9 q4 P
  Values
4 m0 Z0 P& O  Y: M4 g3 E' |  ('191', '0', '吊索类');$ v5 P$ ?0 Y" {7 F! L  N1 B: m: z
  Insert into TBC_TM_CATEGORY
; p& v+ ?& A, L" j  (CATEGORY_ID, SUPERIOR_ID, CATEGORY_NAME)
9 u+ P4 b% \- Q8 N" r  Values
4 Q, s, e: b1 f9 }0 k3 k, G* t" B  ('0', '0', '工属具类别');& E" k) }1 I( C( H& U; F
  Insert into TBC_TM_CATEGORY* P+ K' X% ^& p  t3 v. F, p
  (CATEGORY_ID, SUPERIOR_ID, CATEGORY_NAME)
# P0 x, N  b8 |; P- e; E0 l& r- L3 k7 {
  Values
回复

使用道具 举报

 楼主| 发表于 2012-8-4 14:06:20 | 显示全部楼层

Oracle技术:oracle中对树形结构的查询

</p>  ('791', '191', '扳手');, D& X% c( a2 g  U$ Y; _2 C
  Insert into TBC_TM_CATEGORY) \& u4 k4 D  C' y5 r9 i8 L6 E* t! ~
  (CATEGORY_ID, SUPERIOR_ID, CATEGORY_NAME)
9 V5 @6 W* K$ j1 ]. s  Values# ?: i  f& h/ M$ g! B! l- a" k/ t
  ('1896', '791', '活动扳手');4 D6 L9 p" r9 I- P
  希望得到的查询结果如下:
# h6 M" a5 z- v2 {  CATEGORY_ID, SUPERIOR_ID, CATEGORY_NAME, path" _+ p! q9 |! o, ]) w/ _$ A
  191 0 吊索类 工属具类别\吊索类% x: a6 S% i  @+ p  }# B
  0 0 工属具类别 工属具类别
) Y) N+ I# v7 e2 U0 r( I$ p6 }  791 191 扳手 工属具类别\吊索类\扳手
# O: M# i% F5 l7 w% S- |  1896 791 活动扳手 工属具类别\吊索类\扳手\活动扳手
: m8 X- g/ D7 y6 }7 `7 R; b  请高人指点!如遇正解不差分!7 ]- o( b; h3 B3 x1 ~
  数据修改1,; P7 c; `' [: I. e1 Z+ f
  update TBC_TM_CATEGORY set superior_id=' ' where category_id = '0';
5 k5 l) v( _& @- f7 ^  category_id='0'对应的SUPERIOR_ID不能为'0',否则逻辑上混乱,请楼主思考一下:! X1 J  e% v& z1 d
  SQL语句如下:' H% c% F/ v) A
  select
7 _0 n( Y- k( f4 _! B  {+ _  CATEGORY_ID , SUPERIOR_ID , CATEGORY_NAME,
+ C2 j  T: p  M1 O  SYS_CONNECT_BY_PATH(CATEGORY_NAME,'\') path
( J; {7 ?; q, H1 D* o2 X2 f6 n9 l  from TBC_TM_CATEGORY+ v& l4 ]( x( S1 z1 g2 R& f
  start with superior_id=' '8 E+ P8 K% t+ g) z; k
  connect by prior category_id=superior_id
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-4 21:25 , Processed in 0.246799 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表