OP的原始问题标题:Use a field from one query in a subquery
我在 Access 中编写查询的经验并不丰富,而且遇到了一些麻烦。
我有几张桌子。1 代表产品,1 代表市场,1 代表结合市场和产品的事实。我需要编写一个可以将它们连接在一起的查询,对于特定市场字段 (MF) 的每个实例,我需要返回特定事实字段 (FF) 的第 n 个最高值(每个市场/产品汇总)以及哪个它链接到的事实值的特定产品字段 (PF)。希望这是有道理的。
无论如何,这是我的查询:
select market.MF2, product.PF10, sum(fact.FF3) as FF3
from mMarket market, mProduct product, mFact fact
where market.Item_ID = fact.Market_ID
and product.Item_ID = fact.Product_ID
and FF3 =
(
select min(FF3) from
(
select TOP 2 FF3 from
(
select market2.MF2, product2.PF10, sum(fact2.FF3) as FF3
from mMarket market2, mProduct product2, mFact fact2
where market2.Item_ID = fact2.Market_ID
and product2.Item_ID = fact2.Product_ID
and market2.MF2 = market.MF2
group by market2.MF2, product2.PF10
order by 3 DESC
)
)
)
group by market.MF2, product.PF10
TOP 2 部分是轻松指定 n 的地方。我遇到的问题是,当我在访问中运行它时,它提示我输入 market.MF2 的值(我认为这是指子查询中的实例)。我在想代码会从每一行的主查询中获取该值,但显然它没有这样做。
Tables below:
mMarket
Item_ID MF2
---------------
1 64
2 28
3 73
mProduct
Item_ID PF5 PF10
----------------------------
1 2221 Category1
2 6487 Category3
3 73234 Category2
4 76223 Category1
5 99342 Category2
mFact
Market_ID Product_ID FF3
--------------------------------------
1 1 1000
1 2 1500
1 3 500
1 4 1000
2 1 1500
2 3 1000
2 5 1500
3 1 1000
3 2 500
3 5 2000
查询有什么问题?我看不到
预先感谢
预期成绩:
If n was 1
MF2 PF10 FF3
----------------------------
64 Category1 2000
28 Category2 2500
73 Category2 2000
If n was 2
MF2 PF10 FF3
----------------------------
64 Category3 1500
28 Category1 1500
73 Category1 1000