当前位置:数据库 > Oracle >>

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

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

 

 
下面是查询结果,查询结果和数非常接近
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,