繁体   English   中英

MySql:总和与内部连接相结合 - 结果错误

[英]MySql: Sum in combination with inner joins - wrong results

我有三个不同的表:

  1. 文章
  2. 进口(许多行有许多商品编号、购买日期和购买数量)
  3. 出口(具有许多货号、销售日期和销售数量的多行)

对于特定文章,我想知道导入了多少和导出了多少,以及如果可能的话,它们之间的区别,结果应该是这样的:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM