1

顧客からの出荷の 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 を削除して顧客から合計値を取得すると、返される値が正しくありません。

誰かがこれを理解するのを手伝ってくれますか?

4

1 に答える 1

2

結合に問題があります。sum(distinct )クエリで意味のある状況は考えられません。あなたはそれを間違って使用しています。何が起こっているかというと、出荷間で記事が重複しており、出荷内の値は問題ありません (おそらく、出荷内の 1 つの記事のみ)。ただし、別の出荷にはまったく同じ商品と同じ金額が含まれています。個別はそのような重複を削除します。

解決策は簡単です。削除するだけ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 
于 2012-12-21T14:03:53.890 に答える