我想创建一个查询来计算应付金额,在这种情况下,可以为特定付款完成部分付款时间表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)
  )


我试图减法如下:
How to substract from the resut of two selects in mysql

但这仅在分类帐中存在带有对应的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 ))。

关于mysql - 如何计算这笔付款的应付款?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9155562/

10-16 08:24