我正在寻找一种方法来计算库存量从两个表。
我的表格记录如下:
下面是我的产品表
mysql - 如何使用mysql计算库存-LMLPHP
我有两张桌子,一张是“进仓”买货,另一张是“出仓”卖货。
下面是stockinward表的屏幕截图
mysql - 如何使用mysql计算库存-LMLPHP
这是StockOutside的截图
mysql - 如何使用mysql计算库存-LMLPHP
下面是我计算库存的查询

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;
mysql - 如何使用mysql计算库存-LMLPHP
但问题是在上面的查询中,当我有1000多个产品时,需要8秒以上,那么有没有其他方法可以让我在1或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

10-05 18:47