start with 就是你开始的条件,就是从哪个记录开始进行关联,connect by 是父记录与子记录之间的关联关系!
解决方案 »
- 一个非常简单的存储过程,我不会用,帮帮忙。
- 如何利用shell 脚本或者 perl 脚步实现oracle功能如下
- 如何动态执行调用存储过程
- oracle报错,如何解决?
- oracle sql参数值问题
- 用OMS方式启动Enterprise Manager后,为什么我的数据库打不开? 在线等!!!
- 初学者简单问题,Oracle8i中的security Manager工具Storage Manager工具哪里去了?
- 小弟想知道Oracle与Sql Server各有什么优缺点,学了sqlserver有没有必要再学Oracle呢
- substr(number,2,7)为什么结果为7位???
- 怎么将一个表搜出来的一列转换成用逗号分隔的一行?
- oralce 启动问题
- 关于创建用户的问题
可以查询某个节点下的所有子节点以及叶子节点。如:
16:52:33 SQL> select * from ttree;ID PID PRICE
---------- ---------- ----------
B A 20
D B 3
E B 5
G D 2
C A 1
F C 2
G C 5
G H 3已选择8行。已用时间: 00: 00: 00.93
17:04:16 SQL> select * from ttree start with id='B' connect by prior id=pid;ID PID PRICE
---------- ---------- ----------
B A 20
D B 3
G D 2
E B 5已用时间: 00: 00: 00.32
17:04:49 SQL> 查询了从节点B下的所有子节点(D),以及叶子节点(G,E)
这部分为什么这么写
比如这个,怎么解释
17:04:16 SQL> select * from ttree start with id='B' connect by prior id=pid;ID PID PRICE
---------- ---------- ----------
B A 20
D B 3
G D 2
E B 5对于每一行的id,它的父节点为pid所指向的id
这一行:
D B 3
D的父节点为B,以此类推。
找出所有B的子节点(start with id='B')
porgid=orgid
最后这两种写法,区别?
0 FIRST 第一 我是第一
1 0 SECOND 第二 我是第二
SELECT T.CODE,T.NAME FROM TREE_TABLE CONNECT BY PRIOR T.ID = T.UPPER_ID START WITH ID = 0
|
| ----第一
|
|-----第二
|
|-----第三
如果改变START WITH 后的值,就是从全树截取一部分成为一棵子树,ID的值就是子树的根
SELECT T.CODE,T.NAME FROM TREE_TABLE CONNECT BY PRIOR T.UPPER_ID = T.ID START WITH ID = 0
PRIOR后的表达式表示建树的顺序,一个是从根往叶查询建树,一个是从叶往根查询建树。
CONNECT BY PORGID = PRIOR ORGID 从树的根到所有相关的叶结点的记录
---------- -------------------- ----------
0 总裁办公室 0
1 研发部 0
2 总务处 0
3 开发部 1
4 测试部 1
5 后勤部 2
6 OA部 2
7 采购部 2
8 财务部 2
9 电信开发部 3
9 网络开发部 3 ORGID NAME PORGID
---------- -------------------- ----------
10 物流开发部 3已选择12行。
研发部及其下属部门的查找:
SQL> select * from org connect by porgid=prior orgid start with orgid=1; ORGID NAME PORGID
---------- -------------------- ----------
1 研发部 0
3 开发部 1
9 电信开发部 3
9 网络开发部 3
10 物流开发部 3
4 测试部 1已选择6行。
总务处及其下属部门的查找:
SQL> select * from org connect by porgid=prior orgid start with orgid=2; ORGID NAME PORGID
---------- -------------------- ----------
2 总务处 0
5 后勤部 2
6 OA部 2
7 采购部 2
8 财务部 2