2017-02-05 73 views
1

[1]的SqlDataAdapter SDA2 =新的SqlDataAdapter( “ UPDATE ACCOUNT_T SET ACCOUNT_T.ACCT_BALANCE = ACCOUNT_T.ACCT_BALANCE + TRANSACTION_T.TRANS_AMNT WHERE ACCOUNT_T.ACCT_NUMBER = TRANSACTION_T.ACCT_NUMBER”,CON );一个表中使用的值来更新另一个

我想使用在TRANSACTION_T的TRANS_AMNT中输入的值更新ACCOUNT_T的ACCT_BALANCE列,其中ACCOUNT_T中的ACCT_NUMBER等于TRANSACTION_T中的ACCT_NUMBER。

,当我尝试这样做,我得到这个错误

多部分标识符“TRANSACTION_T.ACCT_NUMBER”不能 界。

喜欢在银行申请存款和提款。

  TRANSACTION_TABLE.      ACCOUNT_TABLE 
      ACCT_NUMBER | 001 |002   ACCT_NUMBER | 001 |002 
      TRANS_TYPE | deposit|deposit  ACCT_NAME | LAWAL|RAHMA 
      TRANS_AMOUNT| 200 | 200   ACCT_BALANCE| 2000 |4000 

我想在存款时增加帐户余额。假设ACCOUNT_NUMBER 001使得200的押金,他的账户余额将增至2200

+1

你不应该使用'SqlDataAdapter'这一点​​。改用'SqlCommand'。 DataAdapter类仅用于ADO.NET DataTable和DataSet类型。 – Dai

+0

我建议查看一下SQL Server的MERGE命令,这样可以更轻松地进行多表数据操作。 – Dai

+1

如果你是从另一个表更新,你需要在更新 –

回答

1

试试这个,

UPDATE AT 
     SET AT.ACCT_BALANCE = AT.ACCT_BALANCE + 
      TT.TRANS_AMNT 
      from ACCOUNT_T AT 
     inner join TRANSACTION_T TT on AT.ACCT_NUMBER = TT.ACCT_NUMBER 
where TT.TRANS_TYPE = 'deposit' 
+0

有一个'from'部分,非常感谢,它只工作一次。我真的很感激,我猜我的数据库知识不够好。无论如何,再次感谢 –

+0

你好,请我仍然需要上面的代码的帮助。它影响表中的每一行,我希望它只影响一行,参考ACCT_NUMBER –

+0

,在这种情况下抛出表和样本数据的表结构,例如放置一些具有ACCT_NUMBER的数据并告诉您想要更新哪一行。 – KumarHarsh

相关问题