精华内容
下载资源
问答
  • Oracle查询树形结构

    2011-06-05 10:00:45
    Oracle查询树形结构,Oracle查询树形结构
  • oracle查询树信息

    2018-03-05 18:42:52
    oracle查询树信息 项目中经常有树结构,如组织、类别等。一般表中有父节点字段,需要查询类型有: - 展示整个树 - 显示所有子节点 - 显示所有祖先节点 应用常规的查询,需要查询多次,oracle提供了查询方法,...

    oracle查询树信息

    项目中经常有树结构,如组织、类别等。一般表中有父节点字段,需要查询类型有:
    - 展示整个树
    - 显示所有子节点
    - 显示所有祖先节点

    应用常规的查询,需要查询多次,oracle提供了查询方法,可以非常简洁直接查询,下面通过示例说明。

    示例表结构

    Employee
    -------------
    ID (int)
    FirstName (varchar)
    LastName (varchar)
    ParentID (int)
    Job (varchar)

    employee表,其中 ParentID 表示Employee的管理者。

    查询完整树

    SELECT *
    FROM   Employee
    START WITH ParentID IS NULL
    CONNECT BY PRIOR ID = ParentID
    ORDER SIBLINGS BY LastName, FirstName, ID;

    查询特定Employee的子节点

    无需层次查询,直接给定:parent_id。

    SELECT *
    FROM   Employee
    WHERE  ParentID = :parent_id
    ORDER BY LastName, FirstName, ID;

    查询所有后代

    与查询整个树一致,但需提供绑定变量:parent_id。

    SELECT *
    FROM   Employee
    START WITH ParentID = :parent_id
    CONNECT BY PRIOR ID = ParentID
    ORDER SIBLINGS BY LastName, FirstName, ID;

    查询祖先

    与前面的类似,但需要CONNECT BY反向查询,无需排序,因为每个Employee只有一个管理者,需指定绑定变量:employee_id。

    SELECT *
    FROM   Employee
    START WITH ID = :employee_id
    CONNECT BY PRIOR ParentID = ID;

    查询员工管理者

    与前面一样,但增加LEVEL = 2过滤,仅获取直接父行。指定绑定变量:employee_id。

    SELECT e.*
    FROM   Employee e
    WHERE  LEVEL = 2
    START WITH ID = :employee_id
    CONNECT BY PRIOR ParentID = ID;

    总结

    利用oracle自带的层级查询,可以提升查询效率,简化查询代码,希望对你有用。

    展开全文
  • Oracle查询树结构表

    2017-11-30 16:37:26
    对于树状结构的表,即有记录父节点或子节点的表,如果不知道到底有多少层级,Oracle有自带的函数可以处理查询

    11月最后一天,赶紧写多一篇凑够四篇

    对于树状结构的表,即有记录父节点或子节点的表,如果不知道到底有多少层级,Oracle有自带的函数可以处理查询

    语法

    select…start with… connect by …prior

    select A from B where C = ‘D’
    start with Id = ‘1’ connect by PreId = prior Id

    prior代表的是父亲的位置,如果是 connect by prior PreId = Id的话,证明PreId是父节点的属性,反之,则代表Id是Prior的属性

    解析:
    select语句查出来的结果再前,Id是标识码,PreId是父节点的Id。
    Start with 是开始的节点,此处起始节点Id为1

    另外,由于查出来的都是单一层级的,不知道他的上一层级,或者是最高层级的结构。如果需要获得每一层树结构的某个属性,可以用SYS_CONNECT_BT_PATH()函数获取信息
    如:

    SYS_CONNECT_BY_PATH (ZDDM, ‘/’) AS PATH,

    这样可以将每一个节点的ZDDM列,用’/’连接成字符串,然后存在PATH中。
    效果如下:
    这里写图片描述
    层级不同,长度也不同
    然后在用substr() 和 instr()来截取操作字符串。

    实际操作,对于表:

    这里写图片描述

    这是实际的表结构,有树状的层次关系

    如果需要查“农用地”下的所有节点,可以用sql

    select * from T_SJZD
    start with bsm = ‘12953’
    connect by SJZDBSM = prior bsm

    结果如下
    这里写图片描述

    最开头的节点就没了

    网上找到更详细的查询方法,包括查亲兄弟、族兄弟、叔伯父等节点的方法:
    http://blog.csdn.net/lisheng19870305/article/details/53669460

    展开全文
  • oracle查询树状表结构,需求是这样,最近项目同样的资源需要区分管理端和子端,之前的权限体系不能满足现有需求,遂记录一下,首先表结构如下,带有父id就好附上脚本SELECT level, s.* FROM sys_action s START ...

    oracle中查询树状表结构,需求是这样,最近项目同样的资源需要区分管理端和子端,之前的权限体系不能满足现有需求,遂记录一下,首先表结构如下,带有父id就好

    这里写图片描述

    附上脚本

    SELECT level, s.*
      FROM sys_action s
     START WITH s.l_action_id = 91
    CONNECT BY PRIOR s.l_action_id = s.l_parent_action_id
     order by level
    

    查询父id为91下的所有子节点,并按Level层级排序,效果如图

    这里写图片描述

    然后因为需要针对管理端一套新的资源体系,所有为了省事,我直接查询当前表中最大l_action_id ,然后将查询的资源体系的父子id统统增加>当前最大的l_action_id(目前我加的是600000),再使用insert插入这一套资源结构,最后修改下父id的值即可

    insert into sys_action
      SELECT s.l_action_id + 600000,
             s.vc_name,
             s.l_status,
             s.vc_remark,
             s.vc_code,
             s.vc_type,
             s.l_parent_action_id + 600000
        FROM sys_action s
       START WITH s.l_action_id = 91
      CONNECT BY PRIOR s.l_action_id = s.l_parent_action_id
    

    笔记是最好的老师

    展开全文
  • 树状结构如下 广东省202913684830 --------越秀区202913684831 -------------麓景麓202913684833 -------------越秀路202913684837 --------天河区202913684832 ...-------------天河路20291368483...
                                           树状结构如下
    广东省202913684830
    --------越秀区202913684831
    -------------麓景麓202913684833
    -------------越秀路202913684837
    --------天河区202913684832
    -------------天河路202913684838
     
    第一种方式
     
    select a.treegroup_id,a.treegroup_parent,a.treegroup_name,
    (select count(*)
    from j_treedepot b
    where b.treegroup_parent=a.treegroup_id) sub_cnt
    from j_treedepot a
    where a.treegroup_parent=202913684830
    order by 1;
     
    第二种方式
    with parent as (
    select a.treegroup_parent, count(*) sub_cnt
    from j_treedepot a
    group by a.treegroup_parent
    order by 1
    )
    select a.treegroup_id, a.treegroup_name, nvl(b.sub_cnt,0) sub_cnt
    from j_treedepot a
    left join parent b on a.treegroup_id=b.treegroup_parent
    where a.treegroup_parent=202913684830
    order by 1
     
                                                 表结构如下
     
     

    转载于:https://www.cnblogs.com/yang5201314/p/7142051.html

    展开全文
  • 如题: 我有一张形结构的表,里面存了一级二级和三级。通过每条记录的parentCode区分,我现在想得到二级节点的code并已二级节点来分组统计数据,怎么写sql呢?谢谢
  • Oracle中的select语句可以用START WITH...CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的, 其基本语法是: ----------------------------------------------------------------------------...
  • 1.某层级节点 select * from ( select *,level le from tableA start with id='根节点ID' connect by 父节点=prior 子节点 ) where le=5 2.叶子节点 ...where t1.c_oid
  • oracle 查询树形结构最底级节点

    千次阅读 2012-11-21 11:29:22
    思路即如果是最底级节点 那么其分组后的count必然是1 因为它下面没有子节点了 而且connect by prior查询无论向上或向下查询、无论是否得到数据,结果中都包含自身。 语句应该还有其他的写法,欢迎大家优化。
  • oracle树查询

    2014-08-27 10:06:15
    oracle树查询各种用法介绍以及例子和技巧!
  • oracle菜单树查询

    2015-01-17 15:25:56
    oracle菜单树查询 使用实例 使用START WITH CONNECT BY PRIOR子句实现递归查询
  • oracle 树查询 语句

    2020-09-11 08:53:51
    oracle 树查询,需要的朋友可以参考下,代码有点乱不好意思啊
  • oracle递归树查询

    2019-07-07 09:46:28
    oracle利用“start withconnect by”查询子节点和父节点数据显示为树状形,此处根节点的pid为null,请根据实际字段值设置进行查询 select id, pid, name from sys_...注:oracle视图不适用oracle递归树查询 ...
  • ORACLE 树查询

    2017-10-16 17:16:22
    Oracle 树查询
  • Oracle树查询

    2014-12-22 15:31:37
    关于oracle树查询 Oracle树查询 ;oracle中prior的用法,connect by prior,形目录 简单记忆法: select * from XX where prior parent_id=id; prior 如果在parent_id一边就是由页查找根,prior在id一边...
  • ORACLE 查询 树查询

    千次阅读 2014-11-06 16:08:19
    前台结构根据个人的权限登录变化 所有我查询要根据 的ID 查询下面所有的子节点 以及本节点的信息  select * from table start with id = #{id} connect by prior id = pid 这里的id就是 父节点的ID
  • oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的。这篇文章给大家介绍了Oracle递归形结构查询功能,需要的朋友参考下
  • oracle 基于 结构查询,root to leaf leaf to root
  • Oracle SQL形结构查询

    2020-09-10 03:06:12
    本文介绍Oracle中使用START WITH...CONNECT BY PRIOR子句实现递归查询树形结构的方法,小伙伴们可以参考一下。
  • connect by prior o1.p_org_id = o1.org_id/*本条记录的p_org_id 等于下条记录的org_id,即向上查询查询该部门的上级单位*/ connect by prior o1.org_id = o1.p_org_id/*本条记录的org_id 等于下条记录的p_org_id...
  • oracle 树查询

    2012-06-10 14:48:07
    oracle树查询又称为递归查询,是最常用的查询方法之一,下文对oracle树查询作了详细的阐述,希望可以让您对oracle树查询有更深的认识。 oracle中的select语句可以用START WITH...CONNECT BY PRIOR子句实现递归查询...
  • Oracle树查询总结

    2011-08-04 10:28:46
    oracle树查询 特别声明:里面的内容来源于网络,在此共享给大家。 1. 查找中的所有顶级父节点 2. 查找一个节点的直属子节点(所有儿子) 3. 查找一个节点的所有 直属子节点(所有后代) 4. 查找一个节点的直属父...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,140
精华内容 18,856
关键字:

oracle查询树