0

現金を口座に入金したいという質問があります。これで、検証用の 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

クエリでデータを別の行に保存したい。変更を行うには、クエリを変更する必要がある場合があります。私は初心者なので、これで私を助けてください。前もって感謝します。

4

3 に答える 3

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 つのトランザクションに複数の行が挿入されます。1 日に複数のトランザクションがある場合は、最後のトランザクションを見つけるために ID 列も必要です。

また、私はあなたのデータベース設計の大ファンではありません。取引ごとにアカウントの「残高」が保存されます。ただし、残高を計算するクエリを作成するか、残高を別のテーブルに保存することをお勧めします。

于 2013-09-19T06:53:35.727 に答える
0

あなたが正しく使用しているように、初めてUpdate Queryを使用します

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

この上記のクエリの後、上記のピン ID を使用して上記のクエリ レコードをコピーする挿入クエリを実行し、クエリを再度更新せず、以下のように挿入するだけです。

INSERT INTO `atm_transaction_details_tb` (`pin`, `amount`, `dot`, `deposit`) 
  (SELECT 
    `pin`,
    `amount`,
    `dot`,
    `deposit` 
  FROM
    atm_transaction_details_tb 
  WHERE pin = 15) ;
于 2013-09-19T09:23:36.567 に答える