[英]MySql: Sum in combination with inner joins - wrong results
我有三个不同的表:
对于特定文章,我想知道导入了多少和导出了多少,以及如果可能的话,它们之间的区别,结果应该是这样的:
102123345, 500, -250, 250
我尝试了以下 SQL 查询,但总和不正确。 它要高得多,似乎有什么东西成倍增加了。
SELECT a.Article, b.Article, c.Article, SUM(b.Quantity) AS IMPORT, SUM(c.Quantity) AS EXPORT
FROM sagecl_Article a
INNER JOIN sagecl_import b
ON a.Article = b.Article
INNER JOIN sagecl_export c
ON b.Article = c.Article
WHERE a.Article = ?
您正在沿两个不同的维度进行聚合。 一种解决方案是在加入之前聚合:
SELECT a.Article, i.imports, e.exports,
(COALESCE(i.imports, 0) - COALESCE(e.exports, 0)) as diff
FROM sagecl_Article a LEFT JOIN
(SELECT i.Article, SUM(i.Quantity) as imports
FROM sagecl_import i
GROUP BY i.Article
) i
ON i.Article = a.Article LEFT JOIN
(SELECT e.Article, SUM(e.Quantity) as exports
FROM sagecl_export e
GROUP BY e.Article
) e
ON e.Article = a.Article
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.