2017-08-04 70 views
0

我生成一個庫存查詢和下面的代碼(主要)工程,但它包括髮票已被作廢,導致負面的庫存。MS訪問與條件的多個連接

Void Yes/No field = tblInvoices.Void 

tblInvoiceDetails.InvoiceNum = tblInvoices.ID 

我無法弄清楚如何確保這不包括被作廢該發票。預先感謝您的幫助!

SELECT tblInventory.ID, Nz(sumTotalPaid,0)-Nz(sumCreditAmount,0) AS Quantity 
FROM (tblInventory 
LEFT JOIN (
    SELECT ProductID, Sum(Quantity) AS sumTotalPaid 
    FROM tblOrderDetails 
    GROUP BY tblOrderDetails.ProductID 
) AS sum1 
    ON tblInventory.ID = sum1.ProductID) 
LEFT JOIN (
    SELECT ProductID, Sum(Quantity) AS sumCreditAmount 
    FROM tblInvoiceDetails 
    GROUP BY tblInvoiceDetails.ProductID 
) AS sum2 
    ON tblInventory.ID = sum2.ProductID; 

回答

0

試試這樣說:

SELECT tblInventory.ID, Nz(sumTotalPaid,0)-Nz(sumCreditAmount,0) AS Quantity 
FROM (tblInventory 
JOIN (
    SELECT ProductID, Sum(Quantity) AS sumTotalPaid 
    FROM tblOrderDetails 
    GROUP BY tblOrderDetails.ProductID 
) AS sum1 
    ON tblInventory.ID = sum1.ProductID) 
JOIN (
    SELECT ProductID, Sum(Quantity) AS sumCreditAmount 
    FROM tblInvoiceDetails 
    WHERE tblInvoiceDetails.InvoiceNum IN 
     (SELECT tblInvoices.ID 
     FROM tblInvoices 
     WHERE tblInvoices.Void='Yes') 
    GROUP BY tblInvoiceDetails.ProductID 
) AS sum2 
    ON tblInventory.ID = sum2.ProductID 

1.-首先,你使用的只是JOIN代替LEFT JOIN,所以你只能有兩個表中值的行。

2:你只能說有tblInvoices.Void='Yes'

+0

工作就像一個魅力,納喬產品 - 謝謝!我將「是」更改爲False,它起作用。謝謝! –