Problem polega na tym, że gdy używasz GROUP BY
, możesz tylko SELECT
agregaty i kolumny, które zostały zgrupowane.
invoices.id
to kolumna, którą próbowałeś wybrać, ale nie pogrupowałeś. Myślę, że prawdopodobnie chcesz dodać tę kolumnę do GROUP BY
klauzula.
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
Przykładowe tabele, które podałeś, prawdopodobnie dadzą:
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
Ale generalnie będziesz mieć coś takiego:
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
Jak widać powyżej, dla faktury 1, 150 zostało zapłaconych gotówką, a 300 zapłacono kartą.