注:本文参考了《整理oracle 树形查询

sql树形递归查询是数据库查询的一种特殊情形,也是组织结构、行政区划查询的一种最常用的的情形之一。下面对该种查询进行一些总结:

create table JD2_SUPERVISE_MATTER
(
id NUMBER(10) not null,
pid NUMBER(10),
data_model_id NUMBER(10),
code VARCHAR2(30),
name VARCHAR2(30),
descript VARCHAR2(50),
flag_notic_budget_unit CHAR(1),
flag_notic_busi_dept CHAR(1),
busi_dept_name VARCHAR2(30),
orderid NUMBER(10)
)
alter table JD2_SUPERVISE_MATTER
add constraint PK_JD2_SUPERVISE_MATTER primary key (ID)
insert into JD2_SUPERVISE_MATTER (ID, PID, DATA_MODEL_ID, CODE, NAME, DESCRIPT, FLAG_NOTIC_BUDGET_UNIT, FLAG_NOTIC_BUSI_DEPT, BUSI_DEPT_NAME, ORDERID)
values (542, 362, null, 'ZCJH', '支出计划', null, null, null, null, null); insert into JD2_SUPERVISE_MATTER (ID, PID, DATA_MODEL_ID, CODE, NAME, DESCRIPT, FLAG_NOTIC_BUDGET_UNIT, FLAG_NOTIC_BUSI_DEPT, BUSI_DEPT_NAME, ORDERID)
values (543, 542, null, 'YKJH', '用款计划申请', null, null, null, null, null); insert into JD2_SUPERVISE_MATTER (ID, PID, DATA_MODEL_ID, CODE, NAME, DESCRIPT, FLAG_NOTIC_BUDGET_UNIT, FLAG_NOTIC_BUSI_DEPT, BUSI_DEPT_NAME, ORDERID)
values (544, 542, null, 'YKJHHZ', '用款计划汇总审核', null, null, null, null, null); insert into JD2_SUPERVISE_MATTER (ID, PID, DATA_MODEL_ID, CODE, NAME, DESCRIPT, FLAG_NOTIC_BUDGET_UNIT, FLAG_NOTIC_BUSI_DEPT, BUSI_DEPT_NAME, ORDERID)
values (481, 382, 361, 'ZJZFSP', '直接支付申请汇总审批', null, '0', '1', null, null); insert into JD2_SUPERVISE_MATTER (ID, PID, DATA_MODEL_ID, CODE, NAME, DESCRIPT, FLAG_NOTIC_BUDGET_UNIT, FLAG_NOTIC_BUSI_DEPT, BUSI_DEPT_NAME, ORDERID)
values (361, null, 302, 'YSBZ', '预算编制', null, '1', '0', '', null); insert into JD2_SUPERVISE_MATTER (ID, PID, DATA_MODEL_ID, CODE, NAME, DESCRIPT, FLAG_NOTIC_BUDGET_UNIT, FLAG_NOTIC_BUSI_DEPT, BUSI_DEPT_NAME, ORDERID)
values (363, 361, 21, 'NCYS', '年初预算', null, '1', '1', null, null); insert into JD2_SUPERVISE_MATTER (ID, PID, DATA_MODEL_ID, CODE, NAME, DESCRIPT, FLAG_NOTIC_BUDGET_UNIT, FLAG_NOTIC_BUSI_DEPT, BUSI_DEPT_NAME, ORDERID)
values (362, null, 101, 'YSZX', '预算执行', null, '0', '1', null, null); insert into JD2_SUPERVISE_MATTER (ID, PID, DATA_MODEL_ID, CODE, NAME, DESCRIPT, FLAG_NOTIC_BUDGET_UNIT, FLAG_NOTIC_BUSI_DEPT, BUSI_DEPT_NAME, ORDERID)
values (381, 362, 61, 'SRZX', '收入执行', null, '0', '1', null, null); insert into JD2_SUPERVISE_MATTER (ID, PID, DATA_MODEL_ID, CODE, NAME, DESCRIPT, FLAG_NOTIC_BUDGET_UNIT, FLAG_NOTIC_BUSI_DEPT, BUSI_DEPT_NAME, ORDERID)
values (382, 362, 101, 'ZCZX', '支出执行', null, '0', '0', null, null); insert into JD2_SUPERVISE_MATTER (ID, PID, DATA_MODEL_ID, CODE, NAME, DESCRIPT, FLAG_NOTIC_BUDGET_UNIT, FLAG_NOTIC_BUSI_DEPT, BUSI_DEPT_NAME, ORDERID)
values (383, 382, null, 'ZFSP', '支付审批', null, '1', '0', null, null); insert into JD2_SUPERVISE_MATTER (ID, PID, DATA_MODEL_ID, CODE, NAME, DESCRIPT, FLAG_NOTIC_BUDGET_UNIT, FLAG_NOTIC_BUSI_DEPT, BUSI_DEPT_NAME, ORDERID)
values (384, 383, 281, 'ZJZF', '直接支付', null, '0', '1', null, null); insert into JD2_SUPERVISE_MATTER (ID, PID, DATA_MODEL_ID, CODE, NAME, DESCRIPT, FLAG_NOTIC_BUDGET_UNIT, FLAG_NOTIC_BUSI_DEPT, BUSI_DEPT_NAME, ORDERID)
values (521, null, 221, 'YSJH', '预算计划', null, '0', '1', null, null);

1、查找某个节点下面子孙节点

select * from JD2_SUPERVISE_MATTER start with id=361 connect by prior id=pid

2、查找节点的祖先节点

select * from JD2_SUPERVISE_MATTER start with id=361 connect by prior pid=id

在树形结构节点很多的情况一下,一般会采用异步刷新的方式进行,在默认加载的情况下,会展开到某个层级。这种情况下,不但要获取某个节点的祖先节点,还需要获取祖先节点的兄弟节点,在这种情况下可以通过level进行

select id,pid,level from JD2_SUPERVISE_MATTER where level>1
connect by prior id=pid start with id=361 order by level

显示出树的级别查询

select id,rpad(' ',(level-1)*4)||name,code,level from JD2_SUPERVISE_MATTER
connect by pid = prior id start with pid is null;

整理oracle 树形查询的更多相关文章

  1. oracle树形查询 start with connect by

    一.简介 在oracle中start with connect by (prior) 用来对树形结构的数据进行查询.其中start with conditon 给出的是数据搜索范围, connect ...

  2. [转载]oracle树形查询 start with connect by

    一.简介 在oracle中start with connect by (prior) 用来对树形结构的数据进行查询.其中start with conditon 给出的是数据搜索范围, connect ...

  3. Oracle树形查询

    sql树形递归查询是数据库查询的一种特殊情形,也是组织结构.行政区划查询的一种最常用的的情形之一.下面对该种查询进行一些总结: start with子句: 递归的条件,需要注意的是如果with后面的值 ...

  4. ORACLE 树形查询 树查询

    前台树结构依据个人的权限登录变化 全部我查询要依据 树的ID 查询以下全部的子节点 以及本节点的信息 select * from table start with id = #{id} connect ...

  5. oracle 树形表结构查询 排序

    oracle 树形表结构排序 select * from Table start with parentid is null connect by prior id=parentid order SI ...

  6. MySql/Oracle树形结构查询

    Oracle树形结构递归查询 在Oracle中,对于树形查询可以使用start with ... connect by select * from treeTable start with id='1 ...

  7. Oracle中树形查询使用方法

    树形查询一般用于上下级场合,使用的特殊sql语法包括level,prior,start with,connect by等,下面将就实例来说明其用法. 表定义: create table tb_hier ...

  8. oracle 树形SQL

    oracle树形sql查询实例分析   通过此SQL语句  [sql] select  * from tree    查看原始数据如下:     我们要想得到如下的一个树形查询结果如下图所示(包含 R ...

  9. 各种oracle参数查询语句

    各种oracle参数查询语句 1.show parameter:--显示各个系统参数配置 2.select * from v$parameter;--显示各个系统参数配置 2.show paramet ...

随机推荐

  1. Unet网络

    近期利用遥感影像进行路网提取,利用Unet网络进行图像分割 介绍如下: U-net网络非常简单,前半部分作用是特征提取,后半部分是上采样.在一些文献中也把这样的结构叫做编码器-解码器结构.由于此网络整 ...

  2. sum() over (order by )

    sum(x) over( partition by y ORDER BY z ) 分析 sum(x) over (partition by y order by z) 求安照y分区,然后按z排序,连续 ...

  3. 一个spring3.2的项目 从jdk1.7放到1.8的环境中编译,打开网页异常:spring jar包版本升级经历

    背景:一个历史项目用的是 spring3.2 的版本,在jdk1.7中运行没有问题,但是如果在jdk1.8中运行就会报错 ---浏览器中显示: HTTP Status 500 - Servlet.in ...

  4. thymeleaf资源加载问题(从Controller跳转)

    <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <me ...

  5. classpath和classpath*的区别

    classpath 指的是自己项目里的编译后的class路径 classpath* 包含jar包里面的class路径

  6. string.Empty, "" 和 null 三者的区别

    转载:http://www.cnblogs.com/mxxblog/archive/2013/08/22/3275387.html 这是一个及其常见的问题,网上已经有关于这个问题的很多讨论.但是我觉得 ...

  7. Shell-删除误解压的文件

    我意外在/var/www/html/,而不是/home/projects/www/current下解压了一个tarball.它搞乱了/var/www/html下的文件,你甚至不知道哪些是误解压出来的. ...

  8. DevExpress VCL 的 cxDBTreeList 的使用方法

    DevExpress VCL 的 cxDBTreeList 的使用方法:(假设控件名为: WBSTree) 1.控件WBSTree 通过绑定  DataSet 获取数据记录(Nodes),通过 Col ...

  9. 如何在 Linux 中查看进程占用的端口号【转】

    对于 Linux 系统管理员来说,清楚某个服务是否正确地绑定或监听某个端口,是至关重要的.如果你需要处理端口相关的问题,这篇文章可能会对你有用. 端口是 Linux 系统上特定进程之间逻辑连接的标识, ...

  10. 设计模式C++学习笔记之十二(Command命令模式)

      命令模式,将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤消的操作.应该是一个比较简单的模式了. 12.1.解释 main(),客户 CIn ...