查询维护产品库存

时间:2015-04-20 07:15:42

标签: sql database ms-access

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

我的查询结果出现在这张图片中,而不是我想要获得的内容:

enter image description here

我想做的是:

(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;

2 个答案:

答案 0 :(得分:2)

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

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

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;

答案 1 :(得分:1)

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

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