我在 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
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
而且这里你不应该使用inner join
,因为它只会检索25264833
哪个成员ID的记录,试试这个:
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;
并在此处演示。