3 таблицы.Mysql левое соединение не работает должным образом
table_customers - customer_id, name
table_orders - order_id, customer_id, order_datetime
table_wallet - customer_id, amount, type // type 1- credit, type 2- debit
Необходимо получить всех клиентов, их общий баланс и дату последнего заказа и идентификатор заказа. Если заказчик не указал дату возврата заказа как 0000-00-00 и идентификатор заказа как 0.
Это мой запрос.
SELECT
C.customer_id,
C.name,
COALESCE(SUM(CASE WHEN type = 2 THEN -W.amount ELSE W.amount END), 0) AS value,
COALESCE(max(O.order_id ) , '0') AS last_order_id,
COALESCE(max(date(O.order_datetime)) , '0000-00-00') AS last_order_date
FROM
table_customers as C
LEFT JOIN
table_wallet as W
ON C.customer_id = W.customer_id
LEFT JOIN
table_orders AS O
ON W.customer_id = O.customer_id
group by C.customer_id
ORDER BY C.customer_id
Все идет правильно, за исключением ценности клиента. Из результата кажется, что он добавляется несколько раз.
Я создал скрипку здесь. http://sqlfiddle.com/#!9/560f2/1
Что не так в запросе? Может ли кто-нибудь помочь мне в этом?
Edit: Ожидаемый результат
customer_id name value last_order_id last_order_date
1 abc 20 3 2016-06-22
2 def 112.55 0 0000-00-00
3 pqrs 0 4 2016-06-15
4 wxyz 0 0 0000-00-00
кажется правильным для меня. Хотите добавить ожидаемый результат для ясности? – fancyPants
@fancyPants, добавил ожидаемый результат в вопросе. –