文档章节

oracle一条语句递归查询父子关系

YaZi-Liu
 YaZi-Liu
发布于 2016/06/12 17:28
字数 356
阅读 152
收藏 6
点赞 0
评论 0

1  建表:

CREATE TABLE test_tree (
  test_id   INT  NOT NULL,
  pid       INT,
  test_val  VARCHAR(10),
  PRIMARY KEY (test_id)
);
INSERT INTO test_tree VALUES(1, 0,   '.NET');
INSERT INTO test_tree VALUES(2, 1,      'C#');
INSERT INTO test_tree VALUES(3, 1,      'J#');
INSERT INTO test_tree VALUES(4, 1,      'ASP.NET');
INSERT INTO test_tree VALUES(5, 1,      'VB.NET');
INSERT INTO test_tree VALUES(6, 0,   'J2EE');
INSERT INTO test_tree VALUES(7, 6,      'EJB');
INSERT INTO test_tree VALUES(8, 6,      'Servlet');
INSERT INTO test_tree VALUES(9, 6,      'JSP');
INSERT INTO test_tree VALUES(10, 0,  'Database');
INSERT INTO test_tree VALUES(11, 10,    'DB2');
INSERT INTO test_tree VALUES(12, 10,    'MySQL');
INSERT INTO test_tree VALUES(13, 10,    'Oracle');
INSERT INTO test_tree VALUES(14, 10,    'SQL Server');
INSERT INTO test_tree VALUES(15, 13,    'PL/SQL');
INSERT INTO test_tree VALUES(16, 15,    'Function');
INSERT INTO test_tree VALUES(17, 15,    'Procedure');
INSERT INTO test_tree VALUES(18, 15,    'Package');
INSERT INTO test_tree VALUES(19, 15,    'Cursor');
INSERT INTO test_tree VALUES(20, 14,    'T-SQL');

使用 START WITH  CONNECT BY 语句实现树状查询

使用 SYS_CONNECT_BY_PATH  函数,获取节点的全路径.

COLUMN "FullPath" 

2:查询语句

SELECT
  LEVEL,
  test_id,
  test_val,
  SYS_CONNECT_BY_PATH(test_val, '\') AS "FullPath"
FROM
  test_tree
START WITH
  pid =0
CONNECT BY PRIOR test_id = pid
ORDER SIBLINGS BY test_val;

结果:

     LEVEL    TEST_ID TEST_VAL             FullPath
---------- ---------- -------------------- -----------------------------------
         1          1 .NET                 \.NET
         2          4 ASP.NET              \.NET\ASP.NET
         2          2 C#                   \.NET\C#
         2          3 J#                   \.NET\J#
         2          5 VB.NET               \.NET\VB.NET
         1         10 Database             \Database
         2         11 DB2                  \Database\DB2
         2         12 MySQL                \Database\MySQL
         2         13 Oracle               \Database\Oracle
         3         15 PL/SQL               \Database\Oracle\PL/SQL
         4         19 Cursor               \Database\Oracle\PL/SQL\Cursor
     LEVEL    TEST_ID TEST_VAL             FullPath
---------- ---------- -------------------- -----------------------------------
         4         16 Function             \Database\Oracle\PL/SQL\Function
         4         18 Package              \Database\Oracle\PL/SQL\Package
         4         17 Procedure            \Database\Oracle\PL/SQL\Procedure
         2         14 SQL Server           \Database\SQL Server
         3         20 T-SQL                \Database\SQL Server\T-SQL
         1          6 J2EE                 \J2EE
         2          7 EJB                  \J2EE\EJB
         2          9 JSP                  \J2EE\JSP
         2          8 Servlet              \J2EE\Servlet

本文转载自:http://blog.csdn.net/wind520/article/details/9670077

共有 人打赏支持
YaZi-Liu
粉丝 1
博文 30
码字总数 35566
作品 0
海淀
PostgreSQL 递归查询

数据库中的数据存在父子关系(单继承,每一条记录只有一个父亲). 如果要查询一条记录以及他的所有子记录,或者要查询一条记录以及他的所有父记录.那么递归查询就再合适不过了.可以简化复杂的SQL...

kenshiro
2013/09/09
0
1
Oracle中start with...connect by子句的用法

Oracle中start with...connect by子句的用法Oracle中start with…connect by prior子句用法 connect by 是结构化查询中用到的,其基本语法是:select … from tablenamestart with 条件1conn...

什么是程序员
2016/11/11
5
0
oracle树状查询-connect by

connect by 是结构化查询中用到的,其基本语法是:   select ... from tablename start with 条件1   connect by 条件2   where 条件3;   例:   select from table   start wit...

hiqj
2016/03/01
129
0
oracle中进行简单树查询(递归查询) ,PRIOR、CONNECT_BY_ROOT的使用

select ADDEPARTMENTCODE, ADDEPARTMENTUPLEVEL, ADDEPARTMENTNAME from (select ADDEPARTMENTCODE, ADDEPARTMENTUPLEVEL, ADDEPARTMENTNAME from ADDEPTARCHITECTURE order by ADDEPARTMENT......

吕兵阳
2014/08/30
0
0
oracle中 connect by prior 递归算法

Oracle中start with...connect by prior子句用法 connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with 条件1 connect by 条件2 where 条件3; 例: sele...

晨曦之光
2012/03/09
0
0
oracle递归函数

oracle start with connect by 用法 oracle中 connect by prior 递归算法 Oracle中start with...connect by prior子句用法 connect by 是结构化查询中用到的,其基本语法是: select ... fro...

泡海椒
2016/03/14
9
0
树形结构的数据库表Schema设计

程序设计过程中,我们常常用树形结构来表征某些数据的关联关系,如企业上下级部门、栏目结构、商品分类等等,通常而言,这些树状结构需要借助于数据库完成持久化。然而目前的各种基于关系的数...

Sub
2013/03/25
0
2
oracle中用START WITH...CONNECT BY PRIOR子句实现递归查询

今天发现在oracle中的select语句可以用START WITH...CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with cond1 con...

zhengjunbo
2013/06/04
0
0
ORACLE 树型层次结构查询

ORACLE中的SELECT语句可以用 START WITH...CONNECT BY PRIOR 子句实现递归查询,CONNECT BY 是结构化查询中用到的. 官方说明: http://docs.oracle.com/cd/B28359_01/server.111/b28286/queri...

i33
2014/04/30
0
0
基于Hadoop生态圈的数据仓库实践 —— 进阶技术(七)

七、递归 数据仓库中的关联实体经常表现为一种“父—子”关系。在这种类型的关系中,一个父亲可能有多个孩子,而一个孩子只能属于一个父亲。例如,一个人只能被分配到一个部门,而一个部门可...

wzy0623
2016/07/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

《Linux Perf Master》Edition 0.4 发布

在线阅读:https://riboseyim.gitbook.io/perf 在线阅读:https://www.gitbook.com/book/riboseyim/linux-perf-master/details 百度网盘【pdf、mobi、ePub】:https://pan.baidu.com/s/1C20T......

RiboseYim
8分钟前
0
0
conda 换源

https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mir......

阿豪boy
18分钟前
0
0
Confluence 6 安装补丁类文件

Atlassian 支持或者 Atlassian 缺陷修复小组可能针对有一些关键问题会提供补丁来解决这些问题,但是这些问题还没有放到下一个更新版本中。这些问题将会使用 Class 类文件同时在官方 Jira bug...

honeymose
27分钟前
0
0
设计模式:代理模式

代理模式可以分为三种:静态代理,动态代理,cglib代理 1.静态代理:被代理的类需要实现一接口或是继承一父类 委托类(被代理的类): package com.java.pattern.proxy.staticdemo;publ...

人觉非常君
30分钟前
0
0
非常实用的IDEA插件之总结

1、Alibaba Java Coding Guidelines 经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的《阿里巴巴Java开发规约》扫描插件!该插件由阿里巴巴P3C项目组研发。P3C...

Gibbons
36分钟前
0
0
Tomcat介绍,安装jdk,安装tomcat,配置Tomcat监听80端口

Tomcat介绍 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 java程序写的网站用tomcat+jdk来运行...

TaoXu
36分钟前
0
0
TensorFlow,从一个 Android Demo 开始

TensorFlow Android Demo 项目地址 Machine Learning 既然提到了 TensorFlow,那是不是得神经网络、机器学习了解下? 如果你能坚持把 机器学习速成课程 给啃完了,觉得还挺有兴趣的,那可以考...

孟飞阳
38分钟前
0
0
JVM学习笔记二:内存结构规范

1、JVM基本结构图 2、java堆(Heap) 3、方法区(Method Area) 4、程序计数器 5、JAVA栈图解 局部变量表:八大基本类型,还可以存储引用类型 上一篇:JVM学习笔记一:类加载机制介绍...

刘祖鹏
43分钟前
0
0
mui集成微信H5支付(返回白屏问题已经解决)

一.项目需求 因为公司人员缺少,没有专门开发安卓和ios的人员,为了项目尽早上线采用了混合APP开发的方式,我选择了MUI混合开发框架,项目中需要在用户购买VIP会员的时候进行支付,所以需要在项目...

银装素裹
47分钟前
0
0
SpringBoot集成Redis--配置自定义的RedisCacheManager

配置自定义的RedisCacheManager--1自定义键生成规则 默认的键生成器 当不指定缓存的key时,SpringBoot会使用SimpleKeyGenerator生成key。 SimpleKeyGenerator SimpleKey 查看源码可以发现,它...

karma123
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部