oarcle高级递归查询

weixin_41915267 2018-04-08 05:11:41
[b]sql罗列如下,很纠结,为什么效率这么慢
select jnl.IDORGANIZATION,jnl.organame
,(select sum(back.je) from T_HPS_JNL_BACK back where 1=1
and back.IDORGANIZATION in (select (org.IDORGANIZATION) from T_ORG_INF org where org.status = 'VALID' START WITH org.IDORGANIZATION=103 CONNECT BY PRIOR org.IDORGANIZATION = org.parentid))
from (
select level lv,a.* from T_ORG_INF a where a.status = 'VALID' START WITH a.IDORGANIZATION=25 CONNECT BY PRIOR a.IDORGANIZATION = a.parentid
) jnl where jnl.lv<3


form 子查询下面查询的记录数是下面7个机构,lv<3,是查询当前机构id为25机构下的下级机构并包括本身(就是级别为1和2的)
IDORGANIZATION organame
25 行业合作
103 软件合作商
10500 行业测试机构
157 ISV
26 苏爱宇
27 史卫锋
28 梁晨

现在我要分别统计这7个机构下面的所有子机构 在T_HPS_JNL_BACK 中的IDORGANIZATION字段对应的就求和

上方org.IDORGANIZATION=103是对应下面7个机构中的一个,能很速度的查询出来,但是103换成jnl.IDORGANIZATION就不行了,
...全文
824 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdsnhan 2018-04-10
  • 打赏
  • 举报
回复
感觉和刚才回答的帖子类似。 建议你,先用CONNECT_BY_ROOT,构建要查询数据的列,然后再用关联求和,速度就快了。

3,488

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧