Problemet är att när du använder GROUP BY
, du kan bara SELECT
aggregat och kolumnerna du har grupperat på.
invoices.id
är en kolumn du försökte välja men inte grupperade. Jag tror att du förmodligen vill lägga till den här kolumnen i GROUP BY
klausul.
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 exempeltabellerna du gav kommer det förmodligen att ge:
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
Men i allmänhet kommer du att ha något som:
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
Där du kan se ovan, för faktura 1, betalades 150 kontant och 300 betalades med kort.