股票在飞行中缺失价值而没有销售

时间:2012-02-20 00:28:15

标签: sql ms-access excel-vba ms-access-2010 vba

我有以下疑问,

QryStockOnHand
SELECT QrySaleTot.Item, QrySaleTot.ProductID, [QryStockLevel].[Stock]-[QrySaleTot].[Quantity] AS StockOnHand
FROM QryStockLevel INNER JOIN QrySaleTot ON QryStockLevel.ProductID = QrySaleTot.ProductID;

QrySaleTot
SELECT TblProduct.Item, Sum(TblTotalSale.Size) AS Quantity, TblProduct.ProductID
FROM TblProduct INNER JOIN TblTotalSale ON TblProduct.[ProductID] = TblTotalSale.[ProductID]
GROUP BY TblProduct.Item, TblProduct.ProductID;

QryStockLevel
SELECT TblStock.ProductID, Sum(TblStock.StockLevel) AS Stock, TblProduct.Item
FROM TblStock INNER JOIN TblProduct ON TblStock.ProductID = TblProduct.ProductID
GROUP BY TblStock.ProductID, TblProduct.Item;

当我运行QryStockonHand并且没有销售产品时,产品不会出现在查询结果中......

样本数据

TblStock
StockID ProductID   StockLevel
138 1   528
139 3   528
140 5   528
141 9   528
142 7   528
143 18  80
144 30  72
145 34  72
146 33  72
147 32  200 
148 22  80
149 19  80
150 23  80
151 20  80



TblProduct
ProductID   Item    Price   StockDelivery   PriceSmall  Large   Small
1   Carling         £2.50   528         £1.40           2   1
3   Carlsburg   £2.70   528         £1.60           2   1
5   IPA         £2.30   528         £1.20           2   1
7   StrongBow   £2.80   528         £1.65           2   1
9   RevJames    £2.45   528         £1.30           2   1
11  Becks           £2.90   72                      1   
12  WKDBlue     £2.80   72              1   
13  WKDRed          £2.80   72              1   
14  SmirnoffIce £2.80   72              1   



TblTotalSale
TotalSalesID    ProductID   SalePrice   Day Time    Size
576 1   £1.40   19/02/2012  15:34:24    1
528 1   £2.50   09/02/2012  14:44:44    2
530 1   £1.40   09/02/2012  14:44:44    1
565 1   £2.50   19/02/2012  15:34:24    2
567 1   £1.40   19/02/2012  15:34:24    1
570 3   £2.70   19/02/2012  15:34:24    2
571 3   £1.60   19/02/2012  15:34:24    1
577 3   £2.70   19/02/2012  15:34:24    2
578 3   £1.60   19/02/2012  15:34:24    1
533 3   £2.70   09/02/2012  14:44:44    2
534 3   £1.60   09/02/2012  14:44:44    1

任何想法为什么......我想这是一个空的东西,它看到没有销售作为一个不存在的东西,而不是零销售....任何想法我怎么能解决它?

谢谢

萨姆

1 个答案:

答案 0 :(得分:2)

使用左外连接,而不是内连接,它将告诉它从连接上的左手表中获取所有行,而不是内连接,它只返回两个表中都有值的行

我不知道QryStockLevel字段,但您的查询应该如下所示:

SELECT QryStockLevel.Item, QryStockLevel.ProductID, [QryStockLevel].[Stock]-NZ([QrySaleTot].[Quantity],0) AS StockOnHand
FROM QryStockLevel LEFT OUTER JOIN QrySaleTot ON QryStockLevel.ProductID = QrySaleTot.ProductID;

注意NZ函数在qrysaletot没有行时处理数量的空值。