簡體   English   中英

MS-Access:從 3 個表計算庫存

[英]MS-Access: Calculate Stock From 3 Tables

我正在閱讀StackOverFlow這篇文章,以調整查詢以從 3 個表中計算庫存。 我有 3 個表tblItemstblPurchasetblSales tblItems包含如下所示的項目信息。

ItemCode    Description                 ItemClass   ItemCategory        ReorderLevel    Unit    Stop
IT000001    Tonner 226A                 Tonner      IT Accessories      10              Pc(s)   No
IT000002    Keyborad (A4Tech, Slim Key) Keyboard    IT Accessories      10              Pc(s)   No
IT000003    Mouse (Wireless)            Mouse       IT Accessories      10              Pc(s)   No
SI000001    A4 Size Paper               Paper       Office Stationary   10              Pc(s)   No
SI000002    Pen (Black)                 Pen         Office Stationary   10              Pc(s)   No
SI000003    Pen (Blue)                  Pen         Office Stationary   10              Pc(s)   No

我的桌子截圖

tblItems:

在此處輸入圖像描述

tbl購買:

在此處輸入圖像描述

tbl銷售:

在此處輸入圖像描述

我的預期結果如下

在此處輸入圖像描述

在查詢結果項目詳細信息將來自tblItems 將每個項目的采購數量和每個項目的銷售數量相加,然后從PurchaseQuantity中減去SalesQuantity以查看庫存。

這是我的查詢,它給了我以下警告。

SELECT DISTINCTROW tblItems.ItemCode, TblItems.Description, TblItems.ItemClass, TblItems.ItemCategory, TblPurchaseAgg.[pQuantity], TblSalesAggs.[sQuantity]
FROM (TblItems 

LEFT JOIN (SELECT TblItems.ItemCode AS ItemCode, Sum(TblPurchase.Quantity) AS pQuantity FROM TblItems LEFT JOIN TblPurchase ON TblItems.ItemCode = TblPurchase.ItemCode GROUP BY TblItems.ItemCode)  
AS TblPurchaseAgg ON TblItems.ItemCode = TblPurchaseAgg.ItemCode) 

LEFT JOIN 

(SELECT TblItems.ItemCode AS ItemCode, Sum(tblSales.Quantity) AS sQuantity FROM TblItems LEFT JOIN tblSales ON TblItems.ItemCode = tblSales.ItemCode GROUP BY TblItems.ItemCode)  AS TblSalesAggs ON TblItems.ItemCode = TblSalesAggs.ItemCode

GROUP BY TblItems.ItemCode, TblItems.Description, TblItems.ItemClass, TblItems.ItemCategory;

在此處輸入圖像描述

尋求幫助以解決警告並獲得我預期的 output。 任何幫助是極大的贊賞。 提前致謝。

你能用這個嗎-

SELECT 
tblItems.ItemCode, TblItems.Description, TblItems.ItemClass, TblItems.ItemCategory, TblPurchaseAgg.[pQuantity], TblSalesAggs.[sQuantity]
FROM TblItems 

LEFT JOIN (SELECT TblPurchase.ItemCode AS ItemCode, Sum(TblPurchase.Quantity) AS pQuantity FROM TblPurchase GROUP BY TblPurchase.ItemCode)  TblPurchaseAgg ON TblItems.ItemCode = TblPurchaseAgg.ItemCode
LEFT JOIN (SELECT tblSales.ItemCode AS ItemCode, Sum(tblSales.Quantity) AS sQuantity FROM tblSales GROUP BY tblSales.ItemCode) TblSalesAggs ON TblItems.ItemCode = TblSalesAggs.ItemCode

GROUP BY TblItems.ItemCode, TblItems.Description, TblItems.ItemClass, TblItems.ItemCategory;

在此處輸入圖像描述

您不需要外部/第一組。 由於您的項目表[probably]將永遠不會有重復的項目,因此返回的記錄將始終是唯一的。

您正在使用的兩個左連接都是按itemCode分組的,因此它們也只會返回每個項目的一條記錄。 所以不需要整體分組。

這可能對你有用:

    SELECT 
    tblItems.ItemCode, 
    TblItems.Description, 
    TblItems.ItemClass, 
    TblItems.ItemCategory, 
    TblPurchaseAgg.pQuantity, 
    TblSalesAggs.sQuantity,
    (TblPurchaseAgg.pQuantity - TblSalesAggs.sQuantity) as stock,
    TblItems.unit
FROM 
    (TblItems 
    LEFT JOIN 
        (
            SELECT 
                TblPurchase.ItemCode AS ItemCode, 
                Sum(TblPurchase.Quantity) AS pQuantity 
            FROM
                TblPurchase
            GROUP BY TblPurchase.ItemCode
        )  AS TblPurchaseAgg
    ON TblItems.ItemCode = TblPurchaseAgg.ItemCode) 
    LEFT JOIN 
    (
        SELECT 
            tblSales.ItemCode AS ItemCode, 
            Sum(tblSales.Quantity) AS sQuantity 
        FROM 
            tblSales
        GROUP BY tblSales.ItemCode
    )  AS TblSalesAggs 
    ON TblItems.ItemCode = TblSalesAggs.ItemCode

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM