Heim  >  Artikel  >  Datenbank  >  Oracle Connect By 使用实例

Oracle Connect By 使用实例

WBOY
WBOYOriginal
2016-06-07 16:48:591171Durchsuche

在实际开发中 connect by可以替代plsql或java中的循环间化开发代码,提高开发效率。如下是我在工作中遇到一个实际解决的问题

在实际开发中  connect by可以替代plsql或java中的循环间化开发代码,提高开发效率。如下是我在工作中遇到一个实际解决的问题

Oracle CONNECT BY的用法 

Oracle递归START WITH...CONNECT BY PRIOR子句用法

Oracle 有表连接的connect by 的优化

Oracle 树查询 性能优化纪实(start with, connect by)

Oracle Database 10g 中新的 CONNECT BY 特性

具体场景:

原系统是一个管理宿舍信息的系统,dorm_room用于存放宿舍的房间信息具体表结构是
 create table dorm_room(bno varchar2(2),fno varchar2(2),rno varchar2(2),bednum varchar2(2));
 这里存放了楼栋号,层号,房间号,及房间中床位总数
 具体数据如下
 insert into dorm_room values(1,1,1,4);
 insert into dorm_room values(1,1,2,4);
 insert into dorm_room values(1,1,3,7);
 也就是说有三个房间,前两个房间床位数都是4,最后一个房间的床位数是7
 目前的需求是根据床位数显示出每个房间中所有床位的数据。期望结果是
 1  1  1  1
 1  1  1  2
 1  1  1  3
 1  1  1  4
 1  1  2  1
 1  1  2  2
 1  1  2  3
 1  1  2  4
 1  1  3  1
 1  1  3  2
 1  1  3  3
 1  1  3  4
1  1  3  5
 1  1  3  6
 1  1  3  7

如果用pl/sql根据每行的床位数判断循环次数,显示出每个房间的所有床位数,编写起来必然要书写较多行代码,因此选用
 sql中的connect by的方式生成出所有的房间的床位数,,具体sql为

select distinct bno,fno,rno,t.l
 from (
 select row_number()over(partition by bno,fno,rno order by level) rn,
        bno,fno,rno,level l
 from dorm_room
 connect by level ) t
 order by bno,fno,rno

显示结果

BN FN RN          L
 -- -- -- ----------
 1  1  1          1
 1  1  1          2
 1  1  1          3
 1  1  1          4
 1  1  2          1
 1  1  2          2
 1  1  2          3
 1  1  2          4
 1  1  3          1
 1  1  3          2
 1  1  3          3

BN FN RN          L
 -- -- -- ----------
 1  1  3          4
 1  1  3          5
 1  1  3          6
 1  1  3          7

本文永久更新链接地址:

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn