2010-05-12 74 views
1

我有以下3个表:MS访问交叉表查询 - 跨越3个表

1)甜度表

FruitIndex  CountryIndex  Sweetness 
1    1     10 
1    2     20 
1    3     400 
2    1     50 
2    2     123 
2    3     1 
3    1     49 
3    2     40 
3    3     2 

2)果名称表

FruitIndex  FruitName 
1    Apple 
2    Orange 
3    Peaches 

3)国名表

CountryIndex CountryName 
1    UnitedStates 
2    Canada 
3    Mexico 

我试图执行交叉表的SQL查询直到结束:

Fruit\Country  UnitedStates Canada  Mexico 
Apple    10   20   400 
Orange    50   123   1 
Peaches    49   40   2 

具有挑战性的部分是标记的行/从名称表的相关名称的列。

我可以使用MS Access设计2个查询,

  1. 创建了甜头表中加入水果/国名表
  2. 执行交叉表查询

但是我有麻烦在单个查询中完成。我试图将第一个查询的SQL嵌套到第二个中,但它似乎不起作用。

不幸的是,我的解决方案需要完全是SQL,因为它是一个嵌入式SQL查询(不能依赖MS Access中的查询设计器等)。

任何帮助非常感谢。

Prembo。

回答

1

如何:

TRANSFORM First(Sweetness.Sweetness) AS FirstOfSweetness 
SELECT Fruit.FruitName 
FROM (Sweetness 
INNER JOIN Fruit 
ON Sweetness.FruitIndex = Fruit.FruitIndex) 
INNER JOIN Country 
ON Sweetness.CountryIndex = Country.CountryIndex 
GROUP BY Fruit.FruitName 
PIVOT Country.CountryName; 
+0

太棒了!非常感谢Remou。完美工作。 – Prembo 2010-05-14 02:52:36

0

我讨厌依靠外部交并出示它作为我的答案,但是这是一个非常陡峭的话题,我不能做到公正。所以我建议你看看this article