我有两个表一个名为Bank_Account的另一个Transaction_history结构是这样的:
Bank_Account
------------
BankID
Balance
Transaction_history
------------
TransID
BankID
Value
我需要将交易值添加到银行账户的余额中,但是Transaction_History中的每个账户可能有多个交易(例如,有人可以存入1000美元,然后在表中进一步向下提取500美元) 。我如何编码,以便从正确的帐户余额中取出500美元?我提供了一个尝试澄清的例子。
Account 1 has a balance of $5000
Account 1 has $1000 deposited
Account 1 has $500 withdrawn
Account 1 current balance is $5500
我目前的代码不会从新余额中提取,而是从原始代码中退出。
提前致谢。
答案 0 :(得分:1)
做出以下假设
VALUE
中的TRANSACTION_HISTORY
列对于存款为正,对于撤回为负TRANSACTION_HISTORY
中的所有行应用到当前余额BANK_ACCOUNT
BankID
表中存在的每个BANK_ACCOUNT
都有TRANSACTION_HISTORY
表中的事务然后你想要一个相关的子查询。像
这样的东西UPDATE bank_account acct
SET balance = balance + (SELECT SUM(th.value)
FROM transaction_history th
WHERE th.bankID = acct.bankID)
WHERE EXISTS( SELECT 1
FROM transaction_history th
WHERE th.bankID = acct.bankID )