Reputation: 1214
I am trying to get Quantity of an item that is requested and yet not received.
Process of purchasing and Item is as
Created Purchase Order > Ordered Items saved in ItemsRequested
table
Created Purchase Invoice > Received Items are in ReceivedItems
table
Using below query to get Items Requested quantity but the result is wrong. What is logically wrong in query ?
select Sum(ItemRequested.Quantity) as OnOrder from ItemRequested
Inner join PurchaseOrders on ItemRequested.PurchaseOrderId = PurchaseOrders.PurchaseOrderId
Inner join PurchaseInvoices on PurchaseInvoices.PurchaseOrderId = PurchaseOrders.PurchaseOrderId
inner join ItemReceived on ItemReceived.PurchaseInvoiceId = PurchaseInvoices.PurchaseInvoiceId
where PurchaseOrders.DateOrdered >'2019-04-15 11:37:26.537' and ItemRequested.ItemId=3439
Upvotes: 0
Views: 508
Reputation: 1625
The definition of the items you need is "requested but not yet received". So you have to retrieve the rows that are in ItemRequested
but absent from ItemReceived
.
Thus your query should be more like this
SELECT SUM(ItemRequested.Quantity) AS OnOrder
FROM ItemRequested
INNER JOIN PurchaseOrders ON ItemRequested.PurchaseOrderId = PurchaseOrders.PurchaseOrderId
WHERE PurchaseOrders.DateOrdered >'2019-04-15 11:37:26.537'
AND ItemRequested.ItemId=3439
-- Exclude the PO having received items
AND NOT EXISTS (
SELECT 1
FROM PurchaseInvoices
INNER JOIN ItemReceived ON ItemReceived.PurchaseInvoiceId = PurchaseInvoices.PurchaseInvoiceId
WHERE PurchaseInvoices.PurchaseOrderId = PurchaseOrders.PurchaseOrderId
)
Upvotes: 1