我有两个表中的一对多关系。更具体地说,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