【问题标题】:Query for maintaining stock of product产品库存维护查询
【发布时间】:2015-04-20 07:15:41
【问题描述】:

我正在尝试创建一个库存查询来维护我的产品库存。下图显示了我的表结构以及我尝试过的内容。

我在这张图片中的查询结果不是我想要得到的:

我想做的是:

(1) 我购买的特定产品的数量?

(2) 我售出的特定产品的数量?

(3) 我手中的特定产品的数量(库存)?

我做错了什么?

DOWNLOAD MS ACCESS FILE

我的查询:

SELECT Product.ProductName,
       Sum([Purchase Order Detail].Quantity) AS [Purchase Quantity],
       Sum([Order Detail].Quantity) AS [Sales Quantity]
FROM ([Purchase Order Detail]
   RIGHT JOIN Product ON [Purchase Order Detail].ProductID = Product.ProductID)
   LEFT JOIN [Order Detail] ON Product.ProductID = [Order Detail].ProductID
GROUP BY Product.ProductName;

【问题讨论】:

  • 你能粘贴你的查询吗,你在问题中试过了!这将给出更好的主意
  • @Vikrant,感谢您的建议。请查看更新
  • 目前你在Purchase Quantity栏目下得到了什么...是数量还是数量?
  • 混合 RIGHT 和 LEFT 连接.. 这很难理解。我建议只使用左连接,因为大多数人发现它们更容易理解。
  • 我得到了数量,但它比预期的要大得多。我附上了下载访问文件的链接,请参阅更新的问题。

标签: sql database ms-access


【解决方案1】:

您不能将购买表和订购表连接在一起,因为您最终会遇到比您实际希望看到的更多的匹配记录。因此,您的总和在您之前的查询中不正确。

您可以使用子查询来获取结果。像这样:

SELECT
    Product.ProductID, 
    Product.ProductName, 
    (select sum(quantity) from [purchase order detail] where [purchase order detail].[ProductID] = product.productid) AS Purchased_quantity,
    (select sum(quantity) from [order detail] where [order detail].[ProductID] = product.productid) AS Sold_quantity,
    (select sum(quantity) from [purchase order detail] where [purchase order detail].[ProductID] = product.productid) - (select sum(quantity) from [order detail] where [order detail].[ProductID] = product.productid) AS Stock
FROM Product
ORDER BY Product.ProductName;

【讨论】:

    【解决方案2】:

    这是您的查询,它将提供所需的输出:

    SELECT [Product].ProductName
        ,SUM([Purchase Order Detail].Quantity) AS [Purchase Quantity]
        ,[Order Detail].Quantity AS [Sales Quantity]
    FROM [Product]
    LEFT JOIN [Purchase Order Detail] ON [Product].ProductID = [Purchase Order Detail].ProductID 
    LEFT JOIN (SELECT SUM(Quantity)as Quantity
                    ,[Order Detail].ProductID 
                FROM [Order Detail]
                GROUP BY [Order Detail].ProductID
            )AS [Order Detail] ON [Product].ProductID = [Order Detail].ProductID
    GROUP BY [Product].ProductName,[Order Detail].Quantity
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-27
      • 2022-01-04
      • 2015-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      相关资源
      最近更新 更多