Oracle层次查询和with函数的使用示例

开发中大家应该都做过什么类似部门管理这样的功能,一般情况下一个部门下面还有下一级部门(子部门),这个层级就类似一棵树。这种情况下一般会把父级部门 和子级部门分成2个或者多个表,这种算是比较常规的做法;有时可能为了数据表管理的方便 就把所有的部门放在一张表里并加上一个字段标识部门之间的隶属关系,这样子看起来有点奇怪,但凑合用用还是Ok的。下面我跟大家分享下我的心得,也就是基 于这种设计怎么做数形图,简单的做法就是查询出一个list集合就可以,要怎么办呢先来看下我的数据表


 
不难看出部门之间用fparent关联,那sql语句怎么写呢,下面是一种偷懒的写法

复制代码 代码如下:

-- ||是连接符,level可以看成常量
select t.fnum,LPAD(' ',3*level-3)||'|-'||fname fname,t.fparent,Level lev
From m_depart t
--start with后面是条件1
start with fparent is null
--connect by Prior后面是条件2
connect by Prior fnum=fparent

下面是查询结果,查询结果和数非常接近


 
差不多了下面还有一个比较常用的with函数,一般做复杂查询可能会用到,可以参考下面的文章

时间: 2024-12-03 20:34:09

Oracle层次查询和with函数的使用示例的相关文章

Oracle层次查询和with函数的使用示例_oracle

开发中大家应该都做过什么类似部门管理这样的功能,一般情况下一个部门下面还有下一级部门(子部门),这个层级就类似一棵树.这种情况下一般会把父级部门和子级部门分成2个或者多个表,这种算是比较常规的做法:有时可能为了数据表管理的方便 就把所有的部门放在一张表里并加上一个字段标识部门之间的隶属关系,这样子看起来有点奇怪,但凑合用用还是Ok的.下面我跟大家分享下我的心得,也就是基于这种设计怎么做数形图,简单的做法就是查询出一个list集合就可以,要怎么办呢先来看下我的数据表  不难看出部门之间用fpare

oracle 合并查询 事务 sql函数小知识学习_oracle

表查询: 合并查询:使用union关键字,可将满足条件的重复行去掉. 复制代码 代码如下: select ename,sal,job from emp where sal > 2500 union select ename,sal,job from emp where job = 'MANAGER'; 而union all用法和union相似,但是不会取消重复行. intersect 用来取两个结果的交集. minus用来取两个结果的差集. 使员工scott的岗位,工资,补助与SMITH员工一样

Oracle开发技能提升之层次查询全面解析

作者介绍 丁俊,DBAplus社群联合发起人,性能优化专家,Oracle ACEA.电子工业出版社终身荣誉作者,<剑破冰山-Oracle开发艺术>副主编.8年电信行业从业经验,从事系统开发与维护.业务架构和数据分析.系统优化等工作.擅长基于Oracle的系统优化,精通SQL.PL SQL.JAVA等.   一.基本概念   对于层次查询需要掌握:   1)理解层次查询的基本概念,识别需求中何时要用到层次查询的能力. 2)建立和格式化树形报表(tree report). 3)修剪树形结构的节点(

oracle分组查询中 查出的值为空的,用nvl()函数,把为空的填为0 为什么不起作用??

问题描述 oracle分组查询中 查出的值为空的,用nvl()函数,把为空的填为0 为什么不起作用?? 解决方案 不知道具体的情况 不过count(0) 不是null 如果没有值默认也是0 如例 select count(0) from dual where 1=2

使用 Oracle XQuery 查询、构建和转换 XML

oracle|xml|转换 在 Oracle 数据库 10g 第 2 版中,Oracle 引入了一个与该数据库集成的全功能自带 XQuery 引擎,该引擎可用于完成与开发支持 XML 的应用程序相关的各种任务.XQuery 是一种用于处理 XML 数据模型的查询语言,它实际上可操作任何类型的可用 XML 表达的数据.尽管 Oracle XQuery 实施使您可以使用数据库数据和外部数据源,但在处理数据库中存储的结构化数据方面,Oracle XML DB 通常可以显著提高性能. 本文提供的示例不仅

ORACLE常用数值函数、转换函数、字符串函数介绍

oracle|函数|转换|字符串 ORACLE常用数值函数.转换函数.字符串函数介绍. 数值函数: abs(m) m的绝对值 mod(m,n) m被n除后的余数 power(m,n) m的n次方 round(m[,n]) m四舍五入至小数点后n位的值(n缺省为0)trunc(m[,n]) m截断n位小数位的值(n缺省为0) -------------------------------------------------------------------------------- 字符函数:

Oracle分页查询语句(五)

Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用. Oracle分页查询语句(一):http://yangtingkun.itpub.net/post/468/100278 Oracle分页查询语句(二):http://yangtingkun.itpub.net/post/468/101703 Oracle分页查询语句(三):http://yangtingkun.itpub.net/post/468/104595 Oracle分页查询语句(四):http://yangtingku

Oracle分页查询格式(八)

Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用. Oracle分页查询格式(一):http://yangtingkun.itpub.net/post/468/100278 Oracle分页查询格式(二):http://yangtingkun.itpub.net/post/468/101703 Oracle分页查询格式(三):http://yangtingkun.itpub.net/post/468/104595 Oracle分页查询格式(四):http://yangtingku

Oracle分页查询格式(十二)

Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用. 这篇介绍分析函数用于分页,且排序字段上包含索引的情况. Oracle分页查询格式(一):http://yangtingkun.itpub.net/post/468/100278 Oracle分页查询格式(二):http://yangtingkun.itpub.net/post/468/101703 Oracle分页查询格式(三):http://yangtingkun.itpub.net/post/468/104595 Oracl