我有一个查询,它返回来自客户的货件的SUM值,并按shipment_id
分组。值是正确的。
SELECT SUM(DISTINCT((article.unit_price * article.tax)*shipment.amount)) as subtotal
FROM shipment
INNER JOIN customer ON customer.customer_id = shipment.customer_id
INNER JOIN article ON shipment.article_id = article.article_id
WHERE shipment.type_id = 2
AND shipment.customer_id = 947
GROUP BY shipment.shipment_id
当我删除GROUP BY以从客户获取总价值时,返回的值不正确。
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
您的联接有问题。我可以想到sum(distinct )
在查询中没有意义的情况。您使用不正确。发生的事情是您在货件中有重复的物品,并且货物中的值是可以的(可能只是货件中的一件物品)。但是,不同的货物具有完全相同的物品和相同的数量。不同的删除了这样的重复。
解决方案很简单,只需删除distinct
:
SELECT SUM((article.unit_price * article.tax)*shipment.amount) as subtotal
FROM shipment INNER JOIN
customer
ON customer.customer_id = shipment.customer_id INNER JOIN
article
ON shipment.article_id = article.article_id
WHERE shipment.type_id = 2 AND shipment.customer_id = 947