时间: 2021-08-13 作者:daque
connect by 语法相信本人不妨从网上找到很多例子,在这边就不多说了。来刻画一下我碰到的题目。
表(fnd_flex_value)中的数据是如许的:
type_id parent_value child_value
139048 2701 270101
139048 270101 27010101
139058 2701 270101
139058 270101 27010101
实行如次语句:
select * from fnd_flex_value ffv
where type_id=139048
start with child_value=270101
connect by prior child_value=ffv.parent_value;
实行成果为:
type_id parent_value child_value
139048 2701 270101
139048 270101 27010101
139048 270101 27010101
首先一条记录反复了两次,我们想赢得的成果该当只需前两条,那么第三条是如何赢得的呢,经过探究,普遍感触不妨是由于如次的启事(假设不精确,请本人矫正,呵呵):
在这段sql的实行的时间,先实行了connect by,g首先才实行where基础。
那么循环赢得的成果为:
第一次循环(从start with child_value=2701)结束找数据:
(1.1) 139048 2701 270101
(1.2) 139058 2701 270101
第二次循环(从(1.1)结束找数据:
(2.1) 139048 270101 27010101
(2.2) 139058 270101 27010101
第三循环(从(1.2)结束)找数据:
(3.1) 139048 270101 27010101
(3.2) 139058 270101 27010101
退出循环,首先实行where type_id=139048
赢得三条记录。
假设想赢得精确的成果,sql语句应改为
select * from
(select * from fnd_flex_value where type_id=139048)ffv
start with child_value=270101
connect by prior child_value=ffv.parent_value;
=====================================================================
connect by 是构造化查问中用到的,其基础语法是:
select ... from tablename
where 基础3
start with 基础1
connect by 基础2;
例:
select * from table
start with org_id = 'hbhqfwgwpy'
connect by prior org_id = parent_id;
大略说来是将一个树状构造保存在一张内外,比如一个表中完备两个字段:
org_id,parent_id那么经过展现每一条记录的parent是谁,就不妨形成一个树状构造。
用上述语法的查问不妨博得这棵树的一切记录。