对oracle中的层次化查询不太理解,看过些资料还是难理解,大家帮帮我!可举个例子给我。
解决方案 »
- job定时更新时效的需求,求思路
- oraclemtsrecoveryservice注册表imagepath键值是多少
- Navicat 8 for Oracle連數據庫時出現錯誤,Oracle版本是 8.1.7,什么原因
- 高分在线等!请问管理员能跟踪到他人查询数据的记录吗?
- oracle如何查询某个库中的存储过程都调用哪些表的问题?
- 关于用ADO异常求助~~
- 如何根据查询结果是否为空进行进一步处理
- 安装oracle第三张盘的时候,出现OracleOra90Agent出错,错误是259:没有可用的数据,请教?
- 调用存储过程出错,那位大侠帮小弟看看,谢谢
- win2000系统瘫痪,怎么样恢复oracle数据库?麻烦讲解一下步骤,oracle版本8.16
- pl/sql存储过程请教
- 这个存储过程哪错了?
比如start with connect by prior 这些不懂
select ... from tablename
start by cond1
connect by cond2
where cond3;
简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段:
id,parentid那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。
用上述语法的查询可以取得这棵树的所有记录。
其中COND1是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。
COND2是连接条件,其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR ID=PRAENTID就是说上一条记录的ID是本条记录的PRAENTID,即本记录的父亲是上一条记录。
COND3是过滤条件,用于对返回的所有记录进行过滤。
TBL_TEST
ID NAME PID
1 10 0
2 11 1
3 20 0
4 12 1
5 121 2从Root往树末梢递归
select * from TBL_TEST
start with id=1
connect by prior id = pidID NAME PID
1 10 0
2 11 1
5 121 2
4 12 1从末梢往树ROOT递归
select * from TBL_TEST
start with id=5
connect by prior pid = idID NAME PID
5 121 2
2 11 1
1 10 0
select * from TBL_TEST
start with id=1
connect by prior id = pidID NAME PID
1 10 0
2 11 1
5 121 2
4 12 1对这个结果难理解,这个sql的意思是上条记录的id是本条记录的pid吧?
比如下面这个:
5 121 2
4 12 1上条记录的id是5 而本条记录却是1
就这里有点不懂,麻烦大师解答下.