Das Problem ist, dass wenn Sie GROUP BY
verwenden , können Sie nur SELECT
Aggregate und die Spalten, nach denen Sie gruppiert haben.
invoices.id
ist eine Spalte, die Sie auswählen, aber nicht gruppieren wollten. Ich denke, Sie möchten diese Spalte wahrscheinlich zu GROUP BY
hinzufügen Klausel.
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
Für die Beispieltabellen, die Sie gegeben haben, wird es wahrscheinlich geben:
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
Aber im Allgemeinen haben Sie etwas wie:
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
Wie Sie oben sehen können, wurden für Rechnung 1 150 in bar und 300 per Karte bezahlt.