J'ai un problème. J'ai 4 tables:mySQL Left Rejoindre plusieurs tables avec conditions
Invoice_Payment, la facture, le client et le calendrier
Fondamentalement, je la requête ci-dessous, qui fonctionne bien, sauf, mois sans date_due ne reviennent pas. I.E seulement mois avec un date_due sera retourné.
Remarque: la table de calendrier répertorie simplement tous les jours de l'année. Il contient un seul appel col de date_field
Base de données: http://oberto.co.nz/jInvoice.txt
Sortie prévue: ma requête en cours, ci-dessous, retournera quelque chose comme:
month total
August 5
September 0
October 196
November 205
December 214
January 229
Remarquez comment Septembre n'est pas retourné? C'est parce que la table Invoice_Payment n'a pas d'enregistrement date_due
Je pense que je dois utiliser une jointure gauche et rejoindre la table du calendrier avec quelque chose comme: LEFT JOIN Calendrier ON Invoice_Payments.date_paid = Calendar.date_field. Mais je n'ai pas de chance
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)
Toute aide appréciée.
date_due est dans le tableau de facture ou d'une table invoice_payment ?? – shankhan
Je ne vois nulle part dans la requête filtrant 'date_due'. êtes-vous sûr qu'il ne retourne pas ces lignes? –
Pourquoi ** abandonnerait-il ** la table 'calendar'? –