库存摘要访问

时间:2012-02-06 10:23:51

标签: sql ms-access access-vba

经过多次搞乱后,我终于得到了一个查询,它给出了所有产品的销售总额,另一个给出了所有产品的吸收量,(下图)。

我正在看Allen Brown的东西而且我明白了,但我想知道如果我能做一份涵盖所有产品所有可用库存的总结报告。共有31个产品,它们都出现在库存查询和销售查询中。

http://imageshack.us/photo/my-images/810/87887.jpg

http://imageshack.us/photo/my-images/827/8787j.jpg

有关编码的任何想法......

我想这是可能的,但后来我真的不知道从哪里开始

我真的想制作一份报告,总结查询中每种产品的库存。

不是使用按钮来处理某个特定产品的库存,而是使用一个按钮来同时处理查询中每个产品的库存。

这有意义吗?

由于

萨姆 更新

这是查找股票的查询

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;

这是查找销售数量的查询

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;

TblStock看起来像

StockID ProductID   StockLevel
89  32  200
90  33  72
91  34  72
92  1   528
93  3   528
94  5   528
95  9   528
96  7   528
97  18  80
98  30  72
99  31  204

产品表看起来像

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   
15  KoppaburgPear   £3.10   72      1   
16  KoppaburgSum    £3.10   72      1   
17  Bulmers £2.90   72      1   
18  Vodka   £1.60   80      1   
19  Gin £1.40   80      1   
20  Sherry  £1.40   80      1   
21  Sambuca £1.70   80      1   
22  Rum £1.60   80      1   
23  Port    £1.60   80      1   
24  Whiskey £1.60   80      1   
25  Baileys £1.60   80      1   
26  Jagermeister    £1.50   80      1   
27  Martini £1.60   80      1   
28  CokeCan £0.85   72      1   
29  Coke    £1.30   204 £0.30   2   1
30  LemonadeCan £0.85   72      1   
31  Lemonade    £1.30   204 £0.30   2   1
32  Squash  £0.25   200     1   
33  Tonic   £0.85   72      1   
34  RedBull £1.90   72      1   
35  Nuts    £0.60   70      1   
36  Crisps  £0.60   70      1   

tbltotalSale看起来像

TotalSalesID    ProductID   SalePrice   Day Time    Size
370 1   £2.50   05/02/2012  19:53:14    2
371 1   £1.40   05/02/2012  19:53:14    1
372 1   £2.50   05/02/2012  19:53:14    2
373 1   £1.40   05/02/2012  19:53:14    1
374 1   £2.50   05/02/2012  20:25:12    2
375 1   £1.40   05/02/2012  20:25:12    1
376 1   £2.50   05/02/2012  20:25:12    2
377 1   £1.40   05/02/2012  20:25:12    1
378 1   £2.50   05/02/2012  20:25:12    2
379 1   £2.50   05/02/2012  20:25:12    2
380 1   £1.40   05/02/2012  20:25:12    1
381 5   £2.30   05/02/2012  20:25:12    2
382 5   £2.30   05/02/2012  20:25:12    2
383 5   £1.20   05/02/2012  20:25:12    1
384 7   £2.80   05/02/2012  20:25:12    2
385 7   £1.65   05/02/2012  20:25:12    1
386 7   £1.65   05/02/2012  20:25:12    1
387 9   £1.30   05/02/2012  20:25:12    1
435 11  £2.90   05/02/2012  20:25:12    1
436 11  £2.90   05/02/2012  20:42:49    1
437 11  £2.90   05/02/2012  20:42:49    1

我可以上传我的数据库,如果那样更容易。

尝试使用以下查询来获取我想要的内容,但它会为每个产品ID返回11个结果,而没有正确的....

SELECT QrySaleTot.Item, QrySaleTot.ProductID, [QryStockLevel].[Stock]-[QrySaleTot].[Quantity] AS StockOnHand
FROM QrySaleTot, QryStockLevel
GROUP BY QrySaleTot.Item, QrySaleTot.ProductID, [QryStockLevel].[Stock]-[QrySaleTot].[Quantity];

由于

2 个答案:

答案 0 :(得分:2)

您可以按ID加入这两个表,然后减去。

SELECT Sales.ID, Stock.Level - Sales.Quantity 
FROM Sales 
INNER JOIN Stock
ON Sales.ID = Stock.ID

更新并没有那么不同。使用查询设计窗口。您可能希望阅读:

Fundamental Microsoft Jet SQL for Access 2000
Intermediate Microsoft Jet SQL for Access 2000
Advanced Microsoft Jet SQL for Access 2000

答案 1 :(得分:1)

您在问题的更新中包含了此查询:

SELECT
    QrySaleTot.Item,
    QrySaleTot.ProductID,
    [QryStockLevel].[Stock]-[QrySaleTot].[Quantity] AS StockOnHand
FROM QrySaleTot, QryStockLevel
GROUP BY
    QrySaleTot.Item,
    QrySaleTot.ProductID,
    [QryStockLevel].[Stock]-[QrySaleTot].[Quantity];

第一个问题是你没有连接条件......因此QrySaleTot中的每一行都将与QryStockLevel中的每一行匹配。这将产生所谓的笛卡尔积,或cross join。修改它以使用2个查询共有的字段上的连接。

GROUP BY在这里似乎没用,因为你没有计算任何聚合值。

最后,Item是一个保留字。如果您必须保留该字段名称,请将其括在您在查询中引用它的任何位置,如下所示:QrySaleTot.[Item]