我有这些表
执行此查询时
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;
我得到了这个结果:
当许可证数量是表格中的购买总额时,我预计只有20(产品ID = 1,即第8,10,11行),而不是54。
有人可以帮帮我吗?
答案 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;