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