Я действительно борюсь с этим запросом. У меня есть 4 таблицы (http://oberto.co.nz/db-sql.png):mySQL Left Join на нескольких таблицах
Invoice_Payement, счет-фактура, клиент и календарь. Я пытаюсь создать отчет, подытожив «paid_amount» col, в Invoice_Payment, по месяцам/годам.
- Запрос должен включать в себя все месяцы, даже без данных
- Там запроса необходимо условие (таблица Invoice): registered_id = [ID]
Я пробовал с ниже запроса , который работает, но падает, когда «paid_date» не имеет записей за месяц. Результат заключается в том, что месяц не отображается в результатах
Я добавил таблицу календаря, чтобы решить эту проблему, но не знаю, как оставить ее присоединенным к ней.
SELECT
MONTHNAME(Invoice_Payments.date_paid) as month,
SUM(Invoice_Payments.paid_amount) AS total
FROM Invoice, Client, Invoice_Payments
WHERE Client.registered_id = 1
AND Client.id = Invoice.client_id
And Invoice.id = Invoice_Payments.invoice_id
AND date_paid IS NOT NULL
GROUP BY YEAR(Invoice_Payments.date_paid), MONTH(Invoice_Payments.date_paid)
См. Приведенную выше ссылку для базовой диаграммы ERD моего сценария.
База данных: http://oberto.co.nz/ Ожидаемый результат: мой текущий запрос, ниже, будет возвращать что-то вроде:
month total
August 5
September 0
October 196
November 205
December 214
January 229
Спасибо за чтение. Я уже отправил этот вопрос, но, думаю, я это плохо сформулировал.
вы хотите просто список итогов за каждый месяц делать? Зачем вам «date_paid IS NOT NULL» в вашем предложении WHERE? Существуют ли фактически фактические платежи в таблице Invoice_Payments с нулевым значением date_paid? – James