| payments | | transactions | | transaction_items |
|:--------------:| |:------------:| |:-----------------:|
| id | | id | | id |
| date | | number | | transaction_id |
| amount | | date | | description |
| transaction_id | | val | | price |
| discount |
| quantity |
Tôi đang cố gắng hiển thị danh sách các khoản thanh toán được thực hiện trên các giao dịch và hiển thị số dư hiện tại sau mỗi khoản thanh toán. Dưới đây là một ví dụ về kết quả mong đợi
| number | DATE(p.date) | total | paid | balance |
| 1355 | 2016-10-31 | 899.00 | 450.00 | 449.00 |
| 1355 | 2016-12-06 | 899.00 | 449.00 | 0.00 |
| 1359 | 2016-09-28 | 4045.00 | 1515.00 | 2530 |
| 1359 | 2016-10-24 | 4045.00 | 35.00 | 2495.00 |
| 1361 | 2016-09-28 | 1548.00 | 1548.00 | 0.00 |
và đây là truy vấn của tôi cho đến nay, nhưng có một lỗi trong mệnh đề where
select
t.number,
DATE(p.date),
ti.total 'total',
SUM(p.amount) 'paid',
ti.total - paid.total 'balance'
from payments p
left join transactions t
on p.transaction_id = t.id
left join (
select inner_ti.transaction_id, sum((inner_ti.price - inner_ti.discount) * inner_ti.quantity) 'total'
from transaction_items inner_ti
group by inner_ti.transaction_id
) ti on t.id = ti.transaction_id
left join (
select inner_p.transaction_id, sum(inner_p.amount) 'total'
from payments inner_p
where inner_p.date <= p.date -- error unknown column p.date
group by inner_p.transaction_id
) paid on t.id = paid.transaction_id
group by t.number, DATE(p.date), ti.total, paid.total
order by DATE(p.date) ASC
Xin lưu ý rằng tôi đang nhóm bởi p.date
vì mối quan tâm của chúng tôi là tổng số thanh toán được thực hiện trong ngày.
Ai đó có thể xin vui lòng cho tôi biết tại sao tôi nhận được lỗi đó? Và có cách giải quyết nào để đạt được kết quả như mong đợi không?