|
回复 #50 lypch 的帖子
因为你要求起点要有A又有B, 所以这个with vw_bom as ... 里面包含了两棵树。这里面有一些数据是重复的,因为B本身是A的下级。加上了个ROOT,就可以区别这些数据是来自A或者B。相当于在这个子集合里面,(root, parent, child) 构成了主键。
inner层把vw_bom的叶子找出来。这些叶子仍然有重复的。然后我们从每个叶子往它的根上找,这就需要三个数据来从vw_bom里面定位记录:(root, parent, child)
start with 带个 ROOT = inner.ROOT 就是为了确保是同一个叶子;CONNECT BY 带上这条件是为了保证是同一棵树。
刚才想起来9i可能不支持规则表达式,那你就自己用instr, substr代替吧,很简单的。 |
|