您的位置:首页 > 数据库

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

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

而我的表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语句就解决了问题,避免了两次访问数据库。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle 数据库 sql
相关文章推荐