MySQL 数据库所需的总和
Sum needed for MySQL database
希望您能帮我解决以下问题:
我有以下 2 个表:
tableA.currencyA 将始终 = 到表 B 中相关项目中的货币 B。
我需要return以下结果:
基本上在结果中我需要 return 表 A 中的所有项目 + 表 B 中的条目摘要。我一直在尝试几个查询,但看起来我无法为此提出一个句子。我试过的那些没有 returning item4 的数据(注意 item4 在 tableB 中没有条目)。
我相信这样的事情会成功:
select
tableA.idA,
tableA.currencyA as currency,
tableA.totalA as total,
case when (sum(tableB.amountB) is null) then 0 else sum(tableB.amountB) end as 'in',
case when (sum(tableB.amountB) is null) then tableA.totalA else
tableA.totalA-sum(tableB.amountB) end as 'difference'
from
tableA left outer join tableB on tableA.idA=tableB.idA
group by tableA.idA;
一个简单的方法来满足你的需要
SELECT z.*,
(z.totalA - z.in) AS difference
FROM (
SELECT a.idA, a.currencyA, a.totalA,
IF(b.idB IS NOT NULL, SUM(b.amountA), 0) AS `in`
FROM tableA a
LEFT JOIN tableB b ON a.idA = b.idA
GROUP BY a.idA
) z;
Output
idA currencyA totalA in difference
1 usd 1000 550 450
2 usd 2000 700 1300
3 eur 3000 600 2400
4 usd 4000 0 4000
希望您能帮我解决以下问题:
我有以下 2 个表:
tableA.currencyA 将始终 = 到表 B 中相关项目中的货币 B。
我需要return以下结果:
基本上在结果中我需要 return 表 A 中的所有项目 + 表 B 中的条目摘要。我一直在尝试几个查询,但看起来我无法为此提出一个句子。我试过的那些没有 returning item4 的数据(注意 item4 在 tableB 中没有条目)。
我相信这样的事情会成功:
select
tableA.idA,
tableA.currencyA as currency,
tableA.totalA as total,
case when (sum(tableB.amountB) is null) then 0 else sum(tableB.amountB) end as 'in',
case when (sum(tableB.amountB) is null) then tableA.totalA else
tableA.totalA-sum(tableB.amountB) end as 'difference'
from
tableA left outer join tableB on tableA.idA=tableB.idA
group by tableA.idA;
一个简单的方法来满足你的需要
SELECT z.*,
(z.totalA - z.in) AS difference
FROM (
SELECT a.idA, a.currencyA, a.totalA,
IF(b.idB IS NOT NULL, SUM(b.amountA), 0) AS `in`
FROM tableA a
LEFT JOIN tableB b ON a.idA = b.idA
GROUP BY a.idA
) z;
Output
idA currencyA totalA in difference
1 usd 1000 550 450
2 usd 2000 700 1300
3 eur 3000 600 2400
4 usd 4000 0 4000