2015-04-20 3 views
0

Я пытаюсь создать запасной запрос для поддержания запаса моего продукта. На следующем рисунке показана моя структура таблицы и то, что я пробовал. 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; 
+1

Можете ли вы вставить ур-запрос, который пробовал в вопросе! что даст лучшую идею – Vikrant

+0

@Vikrant, спасибо за предложение. Пожалуйста, см. Обновленный – Pritesh

+1

в настоящее время, что вы получаете под колонкой 'Purchase Quantity' ... Это количество или количество? – Vikrant

ответ

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; 
+0

Спасибо, что работает для меня – Pritesh

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 
Смежные вопросы