У меня есть две таблицы в отношениях друг к другу. В частности, t1 - информация о заказе, а t2 - данные позиции по этим заказам.Как я могу использовать SUM и COUNT в том же запросе с mysql и получать точные результаты
Я пытаюсь использовать запрос, как это:
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. Однако другие значения завышены неправильно. Я понимаю, что с левым соединением я добавляю дополнительные строки, и поэтому сумма неверна. Я просто не знаю, как это исправить.
Любая помощь была бы принята с благодарностью.
EDIT: Вывод должен быть чем-то вроде этого:
ДАТА | ПОРЯДОК ЗАКАЗА | GRAND TOTAL
Я разработал запрос ниже на основе ответа. Он возвращает все значения правильно, за исключением coupon_total, который он возвращает как 0 каждый раз.
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
Выборочные данные могут помочь –
Почему вы группировки по дате, но не выбрав его? Неясно, как вы ХОТИТЕ этот запрос вернуться! –