我有三个不同的表:
我想为特定的文章知道导入了多少个,导出了多少个,如果可能的话,它们之间的区别,这样结果应该看起来像这样:
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 i.Article
) e
ON e.Article = a.Article