如何使用mysql计算库存

knsnq2tg  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(743)

我正在寻找一种方法来计算库存量从两个表。
我的表格记录如下:
下面是我的产品表

我有两张table,第一张是“库存进货”,用于购买库存,另一张是“库存出口”,用于出售库存。
下面是stockinward表的屏幕截图

这是StockOutside的截图

下面是我计算股票的查询

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;

但问题是在上面的查询中,当我有超过1000个产品时,需要8秒以上的时间,那么有没有其他方法可以让我在1秒或2秒内得到相同的结果?
提前感谢:)

w1e3prcc

w1e3prcc1#

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

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

相关问题