Masalahnya adalah ketika Anda menggunakan GROUP BY
, Anda hanya dapat SELECT
agregat dan kolom yang telah Anda kelompokkan.
invoices.id
adalah kolom yang Anda coba pilih, tetapi tidak dikelompokkan. Saya pikir Anda mungkin ingin menambahkan kolom ini ke GROUP BY
klausa.
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
Untuk tabel contoh yang Anda berikan, mungkin akan memberikan:
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
Tetapi secara umum, Anda akan memiliki sesuatu seperti:
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
Di mana Anda dapat melihat di atas, untuk faktur 1, 150 dibayar tunai, dan 300 dibayar dengan kartu.