如何使用mysql计算库存

时间:2018-05-31 05:30:24

标签: mysql database subquery

我正在寻找一种从两个表中计算库存数量的方法。

我的表记录如下:

以下是我的产品表

enter image description here

我有两个表首先是“stockinward”购买股票,另一个是stockoutward出售股票。

以下是stockinward table

的屏幕截图

enter image description here

这是stockoutward的截图

enter image description here

以下是我计算库存的查询

SELECT 
p.Id,
p.Name,
p.UnitPrice,
((SELECT 
        IFNULL(SUM(Quantity), 0)
    FROM
        stockinward
    WHERE
        ProductId = p.Id) - (SELECT 
        IFNULL(SUM(Quantity), 0)
    FROM
        stockoutward
    WHERE
        ProductId = p.Id)) AS Quantity

这     产品p;

enter image description here

但问题出在上面的查询中,当我有超过1000个产品需要超过8秒时,有没有其他方式可以在1或2秒内得到相同的结果?

提前致谢:)

1 个答案:

答案 0 :(得分:2)

您也可以使用联接而不是子查询

SELECT 
p.Id,
p.Name,
p.UnitPrice,
IFNULL(qin.Quantity, 0) - IFNULL(qout.Quantity, 0) AS Quantity
FROM product
LEFT JOIN (
    SELECT ProductId, SUM(Quantity) AS Quantity
    FROM stockinward
    GROUP BY ProductId
) qin ON p.Id = qin.ProductId
LEFT JOIN (
    SELECT ProductId, SUM(Quantity) AS Quantity
    FROM stockoutward
    GROUP BY ProductId
) qout ON p.Id = qout.ProductId