Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
跨表的mysql计算_Mysql - Fatal编程技术网

跨表的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

我在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
在这里,您不应该使用
内部联接
,因为它只会检索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;

这里。

一般性评论:外部连接之后的内部连接否定了其效果。