我想查询将数据存储在数据库中的不同行中。

时间:2013-09-19 06:32:32

标签: sql oracle

我有查询将现金存入帐户。在此我们提供pin作为验证和存款金额。我使用atm_transaction_details_tb表进行存款以及撤销(我使用类似的查询类型来撤销。 存款查询 - >

selectQuery = "update atm_transaction_details_tb set amount=amount+?, dot=?,
               deposit=? where pin=? ";

撤销查询 - >

 selectQuery = "update atm_transaction_details_tb set amount=amount+?, dot=?,
               deposit=? where pin=? ";

查询是正确的但是在执行查询后我看到撤销和存入在数据库中的同一行,我希望它在单独的行中。类似于数据库的表格如下所示 -

I am getting this in database-
Amount  DOT        Withdraw Deposit PIN
6000    12-Sep-2013 500 500 5555

I want this in database - 
Amount  DOT        Withdraw Deposit PIN
5500    12-Sep-2013     500 5555
5000    12-Sep-2013 500     5555

我希望查询将数据存储在不同的行中。可能是需要修改的查询才能进行更改。因为我是新手,请帮帮我。提前谢谢。

3 个答案:

答案 0 :(得分:0)

selectQuery = "INSERT INTO atm_transaction_details_tb (amount, dot, deposit, pin) 
VALUES(5500,'2013-09-12',500,5555)"

INSERT INTO atm_transaction_details_tb (amount, dot, deposit, pin) 
SELECT TOP 1 
    amount + 500
    , '2013-09-12'
    , 500
    , pin FROM atm_transaction_details 
WHERE pin=5555 
ORDER BY dot DESC

TOP 1和ORDER BY很重要。否则,您将为一个事务插入多行。如果一天有多个交易,您还需要一些标识列来查找最后一笔交易。

此外,我不是您的数据库设计的忠实粉丝。您拥有为每笔交易存储的帐户的“余额”。但您可以更好地进行计算余额的查询,或将余额存储在不同的表格中。

答案 1 :(得分:0)

使用插入查询而不是更新。因为update会根据条件更改相同行/行的值。

答案 2 :(得分:0)

首次使用更新查询,因为您正确使用

UPDATE 
  atm_transaction_details_tb 
SET
  amount = amount + 50,
  dot = '2013-09-12',
  deposit = 50 
WHERE pin = 15

在上面的查询之后,运行insert Query,使用上面的pin id复制上面的查询记录,不再更新查询,只插入如下所示。

INSERT INTO `atm_transaction_details_tb` (`pin`, `amount`, `dot`, `deposit`) 
  (SELECT 
    `pin`,
    `amount`,
    `dot`,
    `deposit` 
  FROM
    atm_transaction_details_tb 
  WHERE pin = 15) ;
相关问题