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

时间:2012-02-06 04:25:23

标签: 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 date NOT NULL,
  amount decimal(10,2) NOT NULL,
  PRIMARY KEY (id)
)

我有一个这样的支付交易表,wherepaymentSchedule_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)
  )

我试着去像这里的减法: How to substract from the resut of two selects in mysql

但只有在分类帐中存在具有对应的paymentSchedule id的字段时才有效。 什么是正确的方法?

另一方面,

是存储付款时间表和交易的正确方法吗?

1 个答案:

答案 0 :(得分:1)

好像你正试图这样做?

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 ))。