oracle 三表关联查询 union all和left join 的运用问题详解(仅代表个人)

需求: 现有三张表, oa_fund_pla(简称a)、oa_fund_plan_i(简称b)、oa_fund_plan_ou(简称c)a为主表, 通过requestid与b和c相关联,其中b和c之间的数据没有任何对应关系,但是有一个列名同为amount的列.刚开始,我只是通过简单的requestid将a与bc相关联sql如下SELECT distinct( oa_fund_plan.depmentname) , oa_fund_plan.operatorname ,...
摘要由CSDN通过智能技术生成

需求: 现有三张表, oa_fund_plan(简称a)、oa_fund_plan_in(简称b)、oa_fund_plan_out(简称c)

a为主表, 通过requestid与b和c相关联,其中b和c之间的数据没有任何对应关系,但是有一个列名同为amount的列.

刚开始,我只是通过简单的requestid将a与bc相关联

sql如下

SELECT distinct( 
    oa_fund_plan.depmentname) ,
    oa_fund_plan.operatorname ,
    oa_fund_plan_in.amount ain,
    oa_fund_plan_out.amount aout,
    oa_fund_plan_in.colltype ,
    oa_fund_plan_out.paytype ,
    oa_fund_plan.billdate  
FROM
    oa_fund_plan ,
    oa_fund_plan_in ,
    oa_fund_plan_out  
WHERE   
    and oa_fund_plan.requestid = oa_fund_plan_in.requestid 
    and oa_fund_plan.requestid = oa_fund_plan_out.requestid

我没发现任何问题,但是我们组长发现数据合计的结果不对,本来查出来的结果应该是b表的两条加上c表的三条. 但是经过我的查询,结果变成了b表的两条乘以c表的三条,就是说原本应该只有2+3条结果,但是变成了2*3条结果.

于是我考虑了left join甚至用上了group by这些对我来说很难理解的语句

 结

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值