Mysql 如何计算这笔款项的到期金额?
我想创建一个查询来计算到期金额,在这种情况下,可以对特定paymentSchedule id进行部分付款 我有一张表,表中的付款计划如下:Mysql 如何计算这笔款项的到期金额?,mysql,Mysql,我想创建一个查询来计算到期金额,在这种情况下,可以对特定paymentSchedule id进行部分付款 我有一张表,表中的付款计划如下: CREATE TABLE IF NOT EXISTS paymentSchedule ( id int(11) NOT NULL AUTO_INCREMENT, concept varchar(32) COLLATE utf8_spanish_ci NOT NULL, student_id int(11) NOT NULL, dueDate
CREATE TABLE IF NOT EXISTS paymentSchedule (
id int(11) NOT NULL AUTO_INCREMENT,
concept varchar(32) COLLATE utf8_spanish_ci NOT NULL,
student_id int(11) NOT NULL,
dueDate date NOT NULL,
amount decimal(10,2) NOT NULL,
PRIMARY KEY (id)
)
我有一个这样的支付交易表,其中PaymentSchedule_id指的是上表:
CREATE TABLE IF NOT EXISTS ledger (
id int(11) NOT NULL AUTO_INCREMENT,
paymentDate date NOT NULL,
amount decimal(10,2) NOT NULL,
paymentSchedule_id int(11) NOT NULL,
PRIMARY KEY (id)
)
我试着用这样的一个减法:
但是,只有在分类账中存在具有相应INF paymentSchedule id的字段时,这种方法才有效。
正确的方法是什么
另一方面,这是存储付款计划和交易的正确方法吗?您似乎正在尝试这样做
for each id in paymentSchedule table:
store paymentSchedule.amount - sum( ledger.amount )
在这种情况下,您可以:
SELECT paymentSchedule.id,
paymentSchedule.amount - IFNULL(SUM(ledger.amount),0) AS remaining
FROM paymentSchedule
LEFT JOIN ledger ON paymentSchedule.id=ledger.paymentSchedule_id
GROUP BY ledger.paymentSchedule_id
这显示了剩余的所有金额,无论一个人是否已付清(感谢
IFNULL(xxx,0)
)。我使用LEFT-JOIN
更新了你上一篇文章中的答案。