【问题标题】:How to calculate inventory using mysql如何使用mysql计算库存
【发布时间】:2018-05-31 05:30:24
【问题描述】:

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

我的表记录如下:

下面是我的产品表

我有两张表,第一张是“stockinward”,用于购买股票,另一张是stockoutward,用于卖出股票。

下面是stockinward表格截图

这是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 秒内得到相同的结果?

提前致谢:)

【问题讨论】:

  • 让我们再做一次,但没有任何图片
  • 如果你使用 MS SQL 服务器而不是 MYSQL,你会发现速度有很大的变化

标签: mysql database subquery


【解决方案1】:

你也可以使用连接而不是子查询

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    相关资源
    最近更新 更多