-1

我有两张表,一张名为 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

我当前的代码不是从新余额中取款,而是从原始代码中取款。

提前致谢。

4

1 回答 1

1

做出以下假设

  • 中的VALUETRANSACTION_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 )
于 2013-03-06T00:02:44.750 回答