我想使用原始 sql 计算帐户余额,而无需额外的应用程序逻辑。交易模式包括金额、from_account_id 和 to_account_id
我的查询是
SELECT SUM(tdebit.amount) - SUM(tcredit.amount) as balance
FROM accounts as a
INNER JOIN transactions as tdebit ON a.id = tdebit.to_account_id
INNER JOIN transactions as tcredit ON a.id = tcredit.from_account_id
WHERE a.id = $1 AND tdebit.succeed = true AND tcredit.succeed = true
而且它没有像我预期的那样工作 - 结果是错误的,但是如果我只在它正常工作后才加入交易,例如借记金额就可以了
SELECT SUM(tdebit.amount) as debit
FROM accounts as a
INNER JOIN transactions as tdebit ON a.id = tdebit.to_account_id
WHERE a.id = $1 AND tdebit.succeed = true
我在余额查询中遗漏了什么?