-1

2つのテーブルがあります。1つはBank_Accountと呼ばれ、もう1つは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_ACCOUNTTRANSACTION_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 に答える