MySQLには大量のデータを持つ2つのテーブルがあります。2つの列を減算し、生成された列の合計を表示したい...
これが私が持っているものです
CREATE TABLE fin_invoice(
id MEDIUMINT NOT NULL AUTO_INCREMENT,
invoice_no INT,
total INT,
PRIMARY KEY (id)
) ENGINE=MyISAM;
INSERT INTO fin_invoice (`id`, `invoice_no`, `total`) VALUES (NULL, '1000', '1000'),
(NULL, '1001', '2000'),(NULL, '1002', '3000'),(NULL, '1003', '1200'),(NULL, '1004', '2000'),
(NULL, '1005', '1202'),(NULL, '1006', '220');
表2は
CREATE TABLE fin_money(
id MEDIUMINT NOT NULL AUTO_INCREMENT,
fk_invoice INT,
amount INT,
PRIMARY KEY (id)
) ENGINE=MyISAM;
INSERT INTO `fin_money` (`id`, `fk_invoice`, `amount`) VALUES (NULL, '1', '100'),
(NULL, '2', '200'),(NULL, '3', '300'),(NULL, '4', '500'),(NULL, '5', '600'),
(NULL, '6', '800'),(NULL, '7', '50');
テーブル2(fin_money)は外部キーfk_invoice.soでtable1(fin_invoice)に接続されているため、関係はfin_invoice.id=fin_money.fk_invoiceです。
これを手に入れたい
+----+-------------+--------+------+---------+
| id | total | amount | bal | running |
+----+-------------+--------+------+---------+
| 1 | 1000 | 100 | 900 | 900 |
| 2 | 2000 | 200 | 1800 | 2700 |
| 3 | 3000 | 300 | 2700 | 5400 |
| 4 | 1200 | 500 | 700 | 6100 |
| 5 | 2000 | 600 | 1400 | 7500 |
| 6 | 1202 | 800 | 402 | 7902 |
| 7 | 220 | 50 | 170 | 8072 |
+----+-------------+--------+------+---------+
ここで、bal = total-amount and runningは、前のidのbalとrunningの合計です。900+ 0=900や1800+900=2700などです。