Запрос суммирования изменяет значения при соединении с другой таблицей - PullRequest
0 голосов
/ 21 февраля 2012

создали следующий запрос, который выдает отчет об общих продажах.Это дает результат, который я ожидал.Я использую MySQL, и запрос выглядит так:

SELECT detailed_report.title AS title,
detailed_report.nid AS nid,
detailed_report.price AS 'price',
SUM(detailed_report.quantity) AS 'total_quantity',
SUM(detailed_report.total) AS 'total_revenue' 
FROM (SELECT uc_order_products.nid AS 'nid',
uc_orders.order_id AS 'order_id',
uc_order_products.title AS title,
uc_order_products.price AS price,
uc_order_products.qty AS 'quantity',
(uc_order_products.qty * uc_order_products.price) AS 'total'
FROM uc_orders uc_orders
LEFT JOIN uc_order_products uc_order_products ON uc_orders.order_id = uc_order_products.order_id
WHERE uc_orders.order_status IN ('completed')) AS detailed_report
GROUP BY nid

Вывод:

enter image description here

Когда я добавляю поля даты в запрос, тогдаколичество количество неверно.Я не понимаю, почему это так.Вот пересмотренный запрос:

SELECT  event_dates.field_dates_value AS start_date,
event_dates.field_dates_value2 AS end_date,
detailed_report.title AS title,
detailed_report.nid AS nid,
detailed_report.price AS 'price',
SUM(detailed_report.quantity) AS 'total_quantity',
SUM(detailed_report.total) AS 'total_revenue' 
FROM (SELECT uc_order_products.nid AS 'nid',
uc_orders.order_id AS 'order_id',
uc_order_products.title AS title,
uc_order_products.price AS price,
uc_order_products.qty AS 'quantity',
(uc_order_products.qty * uc_order_products.price) AS 'total'
FROM uc_orders uc_orders
LEFT JOIN uc_order_products uc_order_products ON uc_orders.order_id = uc_order_products.order_id
WHERE uc_orders.order_status IN ('completed')) AS detailed_report
LEFT JOIN content_field_dates event_dates ON detailed_report.nid =event_dates.nid
GROUP BY nid

Результат выглядит следующим образом:

result of query

Обратите внимание, что значения столбца количества неверны.Почему это?Может кто-нибудь объяснить, что я сделал не так и как это исправить?Я полностью сбит с толку.

Спасибо

1 Ответ

0 голосов
/ 21 февраля 2012

Я бы разбил sql, который вы используете, на куски и определил, есть ли что-нибудь другое в табличном выражении, которое вы используете.

Тогда, если бы это было нормально, я бы удалил сумму из выбора и посмотрел, есть ли какие-либо различия с левым соединением с новой таблицей по сравнению с отсутствием ее.

...