2010-05-12 59 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