我正在寻找一种方法来计算库存量从两个表。
我的表格记录如下:
下面是我的产品表
我有两张桌子,一张是“进仓”买货,另一张是“出仓”卖货。
下面是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秒内得到相同的结果呢?
提前谢谢:)
最佳答案
也可以使用联接而不是子查询
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