私はテーブルを作成し、このクエリでいくつかのダミーデータを挿入しました:
CREATE TABLE transaction (
idtransaction INT NOT NULL AUTO_INCREMENT,
idproduct INT NOT NULL,
quantity INT NOT NULL,
PRIMARY KEY (idtransaction));
INSERT INTO transaction (idproduct, quantity) VALUES
(1, 100),
(1, 200),
(2, 120),
(3, 300),
(2, 200),
(2, 200),
(1, 300);
そして、次のようなテーブル結果を取得したい:
|idtransaction| idproduct | quantity | saldo
1 1 100 100
2 1 100 200
3 2 120 120
4 3 300 300
5 2 200 320
6 2 200 520
7 1 300 500
私はこのようなクエリを作成しました:
SELECT idtransaction,
idproduct,
quantity,
(@saldo := @saldo + quantity) as saldo
FROM transaction
LEFT JOIN
(select @saldo :=0) as s on 1=1;
ただし、saldo 履歴の結果は、すべての idproduct に対して計算されます。
すべてのidproductの「saldo」履歴を取得する方法は?