アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在
id-日付-入金-出金-残高
という5項目あるデータベースがあります。

入出金額を変更した際など、日付でソートをして、すべての行の残高データを再計算し、データを更新したいのですが、どのようなSQL分を使えばよろしいのでしょうか。

ご教授願います。

A 回答 (3件)

こんな感じでしょうか。



UPDATE テーブル名,(SELECT id,(SELECT COALESCE(sum(P.入金),0)-COALESCE(sum(P.出金),0) FROM テーブル名 P WHERE (P.日付<A.日付) OR (P.日付=A.日付 AND P.id<=A.id) ) AS zzz FROM テーブル名 A) AS tmp SET テーブル名.残高=tmp.zzz WHERE テーブル名.id=tmp.id;

この回答への補足

SYNTAXエラーが出てしまいます・・・

補足日時:2012/01/06 22:57
    • good
    • 0

SELECT T1.ID,T1.日付


,(SELECT SUM(T2.入金)-SUM(T2.出金) AS 残高
FROM テーブル名 T2
WHERE T1.日付>=T2.日付)
FROM テーブル名 T1
の処理結果を一旦作業テーブルにINSERTし、そのテーブルを使ってUPDATEするのはどうでしょうか。
    • good
    • 0

>日付でソート



日付はユニークであるという認識でよろしいのですか?
もしくは日付が同じ場合はidの逆順(正順?)でソートするなど必要があるのでしょうか?
また最初の残高は、ソートした1行目のデータを無条件で信じてよろしいのですか?

この回答への補足

言葉足らずで申し訳ありません。

日付はユニークということで大丈夫です。
最初の残高も、一行目のデータから始めて欲しいです。

よろしくお願いします。

補足日時:2012/01/05 17:55
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す