原问题标题: 如何在子查询中使用一个查询的字段
我在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的位置。 我的问题是,当我在Access中运行它时,它会提示我输入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