在MySQL中计算从两个事务表到第三个事务表的库存

时间:2015-07-08 07:26:17

标签: mysql

我有两个表,一个用于传入货物,另一个用于传出。在各种分组中有很多库存查询,它们需要很快,所以我想创建一个第三个表来总结上面两个并运行查询。这只能使用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

2 个答案:

答案 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)