У меня есть следующий запрос, который отлично работает, но только если каждый выбор находит строку.Запрос MySQL возвращает значение только в том случае, если существуют строки
Я попытался добавить IFNULL для возврата 0, если строк не было найдено, но я все еще не получаю правильный возврат.
SELECT IFNULL(paid_value,0)-IFNULL(ordered_value,0)+IFNULL(credit_value,0) AS account_balance
FROM
(
SELECT customer_id, SUM(order_total) AS ordered_value
FROM orders
WHERE customer_id = '1'
GROUP BY customer_id
) AS orders
LEFT JOIN
(
SELECT customer_id, SUM(amount) AS paid_value
FROM transactions
WHERE customer_id = '1'
GROUP BY customer_id
) as payments
ON orders.customer_id = payments.customer_id
LEFT JOIN
(
SELECT customer_id, SUM(amount) AS credit_value
FROM credits
WHERE customer_id = '1'
GROUP BY customer_id
) as credits
ON orders.customer_id = credits.customer_id
Этот запрос в настоящее время возвращает пустой, он не возвращает NULL или 0.
Когда я бегу
SELECT customer_id, SUM(order_total) AS ordered_value
FROM orders
WHERE customer_id = '1'
GROUP BY customer_id
Она также возвращает пустой, не NULL или 0, если нет строки. Чтобы весь запрос работал, каждый из трех отдельных запросов должен иметь в себе строку.
Любые идеи?
Надеюсь, у вас есть таблица для клиента. – AK47
Да, но я не знаю, но это не проблема. – Karl
Я знаю, что это не проблема. Пожалуйста, взгляните на мой ответ. – AK47