質問

私は次の質問を持っています、

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を実行し、製品の販売が行われなかった場合、Queryの結果には憲法が表示されません...

サンプルデータ

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

理由がある理由は...それがヌルのものだと思います。そこでは、販売のゼロではなく、存在しないものとしてNOセールスを見ています。

ありがとう

サム

役に立ちましたか?

解決

内側の結合の代わりに、左外の結合を使用します。これは、両方のテーブルに値を持つ行のみを返す内部結合の代わりに、結合の左手テーブルからすべての行をつかむように指示します。

私は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;

Qrysaletotに行がない場合の量のヌルを処理するNZ関数に注意してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top