Mysql 如何计算这笔款项的到期金额?

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

我想创建一个查询来计算到期金额,在这种情况下,可以对特定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 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
更新了你上一篇文章中的答案。