Следующий вызов sql работает нормально, возвращает правильную общую сумму розницы для клиентов:
SELECT customer.id,
customer.first_name,
customer.last_name,
SUM(sales_line_item_detail.retail) AS total_retail
FROM sales_line_item_detail
INNER JOIN sales_header
ON sales_header.id = sales_line_item_detail.sales_header_id
INNER JOIN customer
ON customer.id = sales_header.customer_id
GROUP BY sales_header.customer_Id
ORDER BY total_Retail DESC
LIMIT 10
Тем не менее, он мне нужен, чтобы вернуть телефон и адрес электронной почты клиента. Пожалуйста, имейте в виду, что не все клиенты имеют адрес электронной почты и номер телефона. всякий раз, когда я ухожу, присоединяюсь к таблицам адресов электронной почты и номеров, он сбрасывает сумму total_retail на тысячи, и я не уверен почему.
Следующий запрос дает совершенно неверные результаты для поля total_retail:
SELECT customer.id,
customer.first_name,
customer.last_name,
IF(
ISNULL( gemstore.customer_phone_numbers.Number),
'No Number..',
gemstore.customer_phone_numbers.Number
) AS Number,
IF(
ISNULL(gemstore.customer_emails.Email),
'No Email...',
gemstore.customer_emails.Email
) AS Email,
SUM(sales_line_item_detail.retail) AS total_retail,
FROM sales_line_item_detail
INNER JOIN sales_header
ON sales_header.id = sales_line_item_detail.sales_header_id
INNER JOIN customer
ON customer.id = sales_header.customer_id
LEFT JOIN gemstore.customer_emails
ON gemstore.customer_emails.Customer_ID = gemstore.customer.ID
LEFT JOIN gemstore.customer_phone_numbers
ON gemstore.customer_phone_numbers.Customer_ID = gemstore.customer.ID
GROUP BY sales_header.customer_Id
ORDER BY total_Retail DESC
LIMIT 10
Любая помощь в выяснении, почему она отбрасывает мои результаты, очень ценится.
Спасибо!