oracle级联查询的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle级联查询的问题相关的知识,希望对你有一定的参考价值。

a表有ID,NAME,delfalg, B表有 id,aid,delflag,status (aid引用a表id)
现在想查a表中每个name标记为delfag = 1的在b表中的记录数,且b表中delflag =1 and status = 1
我要显示的结果应该是这样的
id name acount
1 name1 8
2 name2 0
这个8是name1在b表中的记录总数,0是name2在B表中的记录总数

select a.id,a.name,nvl(c.acount,0) from a,(select id,count(*) acount from b where delflag = 1 and status = 1
group by id) c
where
a.id(+)=c.id

说明一下:a和b还是原来的表名,c是那个结果集定义的表名,所以你运行时只要把a,b换成你自己的表名就行,其他不用改
参考技术A select * from A
where delfag=1
and id in (select id from B where delflag =1 and status = 1)
参考技术B 这样写:

select count(*) from b
where aid in (select id from a where delfalg=1)
and delflag=1
and status=1

Oracle啥是级联查询

希望能举个小例子
小菜在此谢谢了

比较容易理解,如果表A中有一个外键引用了表B的主键,A表就是子表,B表就是父表。当查询表A的数据时,通过表A的外键将表B的记录也查找出来,这就是级联查询。相应的还有级联删除,当删除B表的记录时,会先将A表中关联的记录删掉 参考技术A select pe.cfitemnumberid as 项目编码,pe.cfitemname as 项目名称,sum(pe.cfpactmoney) as 项目合同额,
(sum(ee.Cfbudgetsummoney)+sum(de.cfafteradjustmoney)) as 成本费用额,
nvl(round(((sum(pe.cfpactmoney)-(sum(ee.Cfbudgetsummoney)+sum(de.cfafteradjustmoney)))/sum(pe.cfpactmoney)),2),0)*100 || '%' as 毛利率
from ct_ifm_itempactentry pe
left join ct_ifm_itempact p on pe.fparentid = p.fid
left join ct_ifm_itemexpensebudget e on pe.cfitemnumberid = e.cfitemcodingid
left join ct_ifm_itemexpensebudgetentry ee on ee.fparentid = e.fid
left join ct_ifm_itemdatumbudget d on pe.cfitemnumberid = d.cfitemcodingid
left join ct_ifm_itemdatumbudgetentry de on d.fid = de.fparentid
where pe.cfitemnumberid is not null
group by pe.cfitemnumberid,pe.cfitemname

以上是关于oracle级联查询的问题的主要内容,如果未能解决你的问题,请参考以下文章

oracle语句的级联问题,这个语句e.mgr=m.empno(+) 谁可以给我讲讲这个是啥意思还带有(+)详细解答哦!

oracle使用connect by进行级联查询 树型菜单

java:Oracle(级联删除,左右内外交叉自然连接,子查询,all,any,in)

ORACLE数据库的级联查询

ORACLE数据库的级联查询

ORACLE数据库 存储过程 中 从几张级联表中查询 出结果集,循环添加到另一张表的某一字段