跨表的mysql计算
我在mysql中有三个表,数据如下,我想知道如何获得以下输出。我不知道我的编码有什么问题跨表的mysql计算,mysql,Mysql,我在mysql中有三个表,数据如下,我想知道如何获得以下输出。我不知道我的编码有什么问题 select rev.memberid, (sum(rev.earned)/rule.revperpoint) - sum(redeem.redeempoint) as bal from rev left join rule on rev.rulename = rule.rulename inner join redeem on rev.memberid = redeem.memberid
select
rev.memberid,
(sum(rev.earned)/rule.revperpoint) - sum(redeem.redeempoint) as bal
from rev
left join rule on rev.rulename = rule.rulename
inner join redeem on rev.memberid = redeem.memberid
group by rev.memberid;
表1规则
rulename revperpoint
CNY 2
NY 1
表2修订版
memberid earned rulename
37638899 500.50 CNY
37638899 400.50 CNY
25264833 300.50 CNY
2526833 600.50 CNY
表3赎回
memberid redeempoint
25264833 100.00
25264833 50.00
预期产量
memberid bal
25264833 300.50
37638899 450.50
根据您的期望结果,表
rev
中的第4行应为
25264833 600.50 CNY
在这里,您不应该使用内部联接
,因为它只会检索memberid为25264833的记录,请尝试以下操作:
select
rev.memberid,
(sum(rev.earned) / rule.revperpoint ) - coalesce(redeem.redeempoint, 0) as bal
from rev
left join rule on rev.rulename = rule.rulename
left join (select memberid, sum(redeem.redeempoint) as redeempoint from redeem group by memberid) redeem on rev.memberid = redeem.memberid
group by rev.memberid;
这里。一般性评论:外部连接之后的内部连接否定了其效果。