Le problème est que lorsque vous utilisez GROUP BY
, vous ne pouvez que SELECT
les agrégats et les colonnes sur lesquelles vous avez regroupé.
invoices.id
est une colonne que vous avez essayé de sélectionner, mais que vous n'avez pas groupée. Je pense que vous voulez probablement ajouter cette colonne au GROUP BY
clause.
SELECT
invoices.id,
sum(grossTotal)-IFNULL(depositsCheck.previouslyPaid,0) as todayTotal,
depositsCheck.previouslyPaid, sum(grossTotal) as grossTotal
FROM `invoices`
LEFT JOIN (SELECT SUM(amount) as previouslyPaid, invNo
FROM deposits
GROUP BY invNo) depositsCheck ON depositsCheck.invNo=invoices.id
GROUP BY invoices.paymentType, invoices.id ORDER BY id DESC
Pour les exemples de tableaux que vous avez donnés, cela donnera probablement :
id | paymentType | grossTotal | dateTime | previouslyPaid
1 | Cash | 1000 | UNIX TIME | 150
2 | Card | 1350 | UNIX TIME | 350
3 | Card | 1250 | UNIX TIME | 0
4 | Card | 750 | UNIX TIME | 0
Mais en général, vous aurez quelque chose comme :
id | paymentType | grossTotal | dateTime | previouslyPaid
1 | Cash | 1000 | UNIX TIME | 150
1 | Card | 1000 | UNIX TIME | 300
2 | Cash | 1350 | UNIX TIME | 350
2 | Card | 1350 | UNIX TIME | 350
Là où vous pouvez voir ci-dessus, pour la facture 1, 150 ont été payés en espèces et 300 ont été payés par carte.