oracle树结构查询----connect by语法详解.doc

oracle树结构查询----connect by语法详解.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
oracle树结构查询----connect by语法详解

oracle树结构查询----connect by语法详解 CONNECT BY 语法相信大家可以从网上找到很多例子,在这里就不多说了。来描述一下我遇到的问题。 表(fnd_flex_value)中的数据是这样的: TYPE_ID PARENT_VALUE CHILD_VALUE 139048 2701 270101 139048 270101 139058 2701 270101 139058 270101 执行如下语句: 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 139048 270101 最后一条记录重复了两次,我们想得到的结果应该只有前两条,那么第三条是怎么得到的呢,经过研究,个人认为可能是因为如下的原因(如果不正确,请大家改正,呵呵): 在这段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 (2.2) 139058 270101 第三循环(从(1.2)开始)找数据: (3.1) 139048 270101 (3.2) 139058 270101 退出循环,最后执行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是谁,就可以形成一个树状结构。 用上述语法的查询可以取得这棵树的所有记录。 其中: 条件1 是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。 条件2 是连接条件,其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR org_id = parent_id就是说上一条记录的org_id 是本条记录的parent_id,即本记录的父亲是上一条记录。 条件3 是过滤条件,用于对返回的所有记录进行过滤。 简单介绍如下: 早扫描树结构表时,需要依此访问树结构的每个节点,一个节点只能访问一次,其访问的步骤如下: 第

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档