我有两个表,一个用于传入货物,另一个用于传出。在各种分组中有很多库存查询,它们需要很快,所以我想创建一个第三个表来总结上面两个并运行查询。这只能使用SQL吗?
简化示例:
Table: INCOMING
id productid amount_in
------------------------
1 6 100
2 5 300
3 6 50
4 2 10
Table: OUTGOING
id productid amount_out
-------------------------
1 5 10
2 5 20
3 6 30
结果表应包含剩余库存:
Table: STOCK
productid amount
---------------------
2 10
5 270 -- 300-10-20
6 120 -- 100+50-30
答案 0 :(得分:1)
我使用UNION ALL对两个表进行了分组,以保留类似的记录,然后通过插入产品ID和金额的SUM来使用获取的表中的INSERT INTO SELECT语句,将amount_out乘以-1以减去它总共。
INSERT INTO STOCK
SELECT productid, SUM(amount)
FROM(
SELECT productid , amount_in AS amount FROM INCOMING
UNION ALL
SELECT productid , amount_out * -1 AS amount FROM OUTGOING)
GROUP BY productid
答案 1 :(得分:1)
尝试类似:
SELECT productid, in - out AS amount
FROM
((SELECT productid, SUM(amount_in) AS in
FROM INCOMING
GROUP BY productid) AS a
INNER JOIN
(SELECT productid, SUM(amount_out) AS out
FROM OUTGOING
GROUP BY productid) AS b
ON a.productid = b.productid)