使用PL/Sql查询具有层次连接的数据

场景分析:在项目开发时,遇到了这样一种情况:对指定机关单位的月结数据进行统计时,需要包括下级所有单位的数据。可是机关单位的层次是多级的,如:省级——市级——区县级——街道。

而我的表TBL1结构设计是
      机关代码(jg) 业务数据列1(a) 业务数据列2(b) …

机关表TBL2设计如下:
      机关代码(jg) 上级机关(sj) …

要是传递一个当前机关代码,通过一个sql语句查询出当前机关和所有下级机关数据就好了。用的数据库是Oracle,开始我采取的方式是,程序先通过递归获得当前机关和所有下级机关的集合,然后拼sql用in子句查询。这样虽可以解决问题,可我总觉得别扭。后来发现Oracle的PL/SQL原来可以查询出这种多层次数据。
如下(假设当前税务机关变量值为1234):
 
SLEECT SUM(A), SUM(B) FROM TBL1 WHERE TBL1.JG IN ( select JG from TBL2 where TBL2.SJ = '1234' or (TBL2.JG in (select TBL2.SJ from TBL2 start with TBL2.SJ ='1234' connect by TBL2.SJ = prior TBL2.JG)) )

通过一个并不算复杂的sql语句就解决了问题,避免了两次访问数据库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值