我正在尝试创建库存查询以维护我的产品库存。下图显示了我的表结构以及我尝试过的内容。
我的查询结果出现在这张图片中,而不是我想要获得的内容:
我想做的是:
(1)我购买的特定产品的数量?
(2)我销售的特定产品的数量?
(3)我手中的特定产品数量(库存)?
我做错了什么?
我的查询:
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;
答案 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