Vấn đề là khi bạn sử dụng GROUP BY
, bạn chỉ có thể SELECT
tổng hợp và các cột bạn đã nhóm.
invoices.id
là một cột bạn đã cố gắng chọn, nhưng không nhóm. Tôi nghĩ rằng bạn có thể muốn thêm cột này vào GROUP BY
mệnh đề.
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
Đối với các bảng ví dụ bạn đã đưa ra, nó có thể sẽ cung cấp:
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
Nhưng nói chung, bạn sẽ có một cái gì đó như:
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
Nơi bạn có thể thấy ở trên, đối với hóa đơn 1, 150 được thanh toán bằng tiền mặt và 300 được thanh toán bằng thẻ.