大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 数据库 -> ORACLE -> ORACLE树结构查询--connect by语法详

ORACLE树结构查询--connect by语法详

时间: 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是谁,就不妨形成一个树状构造。

用上述语法的查问不妨博得这棵树的一切记录。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.