我正在寻找一种从两个表中计算库存数量的方法。
我的表记录如下:
以下是我的产品表
我有两个表首先是“stockinward”购买股票,另一个是stockoutward出售股票。
以下是stockinward table
的屏幕截图这是stockoutward的截图
以下是我计算库存的查询
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秒内得到相同的结果?
提前致谢:)
答案 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