我有一个表,内记录的树型结构的信息。
即:id/parent_id/name,现要将其按照树型结构展现出来。
我现在用的是普通的深度优先法遍历整个树,效率很底,
可以前我见过一个高手在oracle里用一个SQL就可实现这种查询,请问这个SQL应该怎么写?
先谢了。
即:id/parent_id/name,现要将其按照树型结构展现出来。
我现在用的是普通的深度优先法遍历整个树,效率很底,
可以前我见过一个高手在oracle里用一个SQL就可实现这种查询,请问这个SQL应该怎么写?
先谢了。
解决方案 »
- oracle效率问题
- oracle语法
- 请教,有防火墙的oracle服务器需要开放那些端口?
- 共享:SQL Server 到 Oracle 的SQL语法自动翻译(转换)器源码
- exists 可以变换成非exists的语句吗
- 请问oracle中raise是什么意思?为什么不用rollback?
- 谁弄过informix 转到 oracle 10G ?还有现在一个Oracle 10G 标准版大概多少钱
- 新手提问:oracle9iAS与Oracle9i有什么区别?
- 这下惨了,大家SOS
- 如何通过SQL语句获取我的ORACLE版本号。
- open 可以作用在变量上吗?下面的句子什么意思呢?
- ORACLE高手请进入
是connect by + start with吗?
START WITH ID = :ID
CONNECT BY PRIOR SUPERID = ID;
insert into testtree values(1,0,'中国a');
insert into testtree values(2,0,'美国');
insert into testtree values(3,0,'加拿大');
insert into testtree values(4,1,'北京');
insert into testtree values(5,1,'上海');
insert into testtree values(6,1,'江苏');
insert into testtree values(7,6,'苏州');
insert into testtree values(8,7,'常熟');
insert into testtree values(9,6,'南京');
insert into testtree values(10,6,'无锡');
insert into testtree values(11,2,'纽约');
insert into testtree values(12,2,'旧金山');
----全显示-----
select lpad(' ',level-1,' ')||name name from testtree a start with priorid=0 connect by prior id = priorid;
select lpad(' ',level-1,' ')||name name from testtree a start with id=8 connect by id=prior priorid;---按父找子--
select lpad(' ',level-1,' ')||name name from testtree a start with id=1 connect by prior id=priorid;
SELECT DISTINCT A.USERID,B.DWBH00,C.DWMC00 FROM SYSUSER_USERLIST A,SYSUSER_ZGYQXB B ,DA_DWXX00 C WHERE A.USERID=B.USERID AND B.DWBH00=C.DWBH00 AND A.FZXBH0=C.FZXBH0 AND B.USERID IN (SELECT USERID FROM SYSUSER_USERLIST CONNECT BY USERID=PRIOR USERGR START WITH USERID=:TMP) ORDER BY USERID表SYSUSER_USERLIST 是一树型表,USERID为主关键字