我有兩個表中的一對多關係。更具體地說,t1是訂單信息,t2是這些訂單上的訂單項詳細信息。如何在使用mysql的同一查詢中使用SUM和COUNT並獲得準確的結果
我試圖用這樣的查詢:
SELECT COUNT(DISTINCT(t1.id)) order_count,
SUM(t1.order_total) order_total,
SUM(t2.product_price) product_total,
DATE(t1.order_date) order_date
FROM t1
LEFT JOIN t2 ON t1.id = t2.id
GROUP BY t1.order_date
該查詢返回ORDER_COUNT正確的值。但其他值不正確地膨脹。據我所知,用左連接我添加額外的行,這就是爲什麼總和是不正確的。我只是不知道如何解決它。
任何幫助將不勝感激。
編輯:輸出應該是這樣的:
DATE |訂單計數| GRAND TOTAL
我根據響應開發了以下查詢。除了每次返回0的coupon_total之外,它會正確返回所有值。
SELECT
COUNT(DISTINCT(o.order_number)) order_count,
DATE(o.order_date) order_date,
SUM(o.total_product_total) product_total,
SUM(o.total_shipping) shipping_total,
SUM(o.total_grand_total) grand_total,
o.coupon_total
FROM (
SELECT
DATE(o.order_date) order_date,
o.order_number,
o.total_product_total,
o.total_shipping,
o.total_grand_total,
IF(op.record_type='cpn',SUM(op.price),0) coupon_total
FROM orders o
LEFT JOIN orders_products op ON o.order_number=op.order_number
GROUP BY o.order_number
) o
GROUP BY DATE(o.order_date)
ORDER BY o.order_date DESC
的樣本數據可能有助於 – 2010-11-06 20:44:26
你爲什麼要按照日期分組,但不選擇它?目前還不清楚你想要這個查詢返回什麼! – 2010-11-06 21:31:04