MySQL SUM不适用于GROUP BY

时间:2014-07-25 03:19:13

标签: mysql sql group-by sum

我有这些表

customers table

products table

purchases table

versions table

执行此查询时

SELECT 
    products.name,
    versions.version, 
    purchases.`purchase date`, 
    SUM(purchases.`number of licenses`) 
FROM products,
    versions, 
    purchases 
WHERE 
    products.id = versions.`product id` 
    AND products.id = 1
GROUP BY
    products.name, 
    versions.version;

我得到了这个结果:

enter image description here

当许可证数量是表格中的购买总额时,我预计只有20(产品ID = 1,即第8,10,11行),而不是54。

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:2)

您的where条款未提及purchases,因此它为每一行的所有购买总结。

最好使用现代JOIN ... ON语法表达联接。由于您还没有提供表格定义,因此很难指定您应该做什么。

以下是向您展示语法的粗略猜测。它肯定不会按原样运作;你必须根据自己的情况调整它。

SELECT 
    pr.name,
    v.version, 
    pu.`purchase date`, 
    SUM(pu.`number of licenses`) 
FROM products pr
    JOIN versions v on pr.id = v.`product id` 
    JOIN purchases pu 
       on pu.product_id=pr.product_id 
      and pu.product_version_id=v.version_id
GROUP BY
    pr.name, 
    v.version;