2010-05-12 7 views
1

У меня есть следующие 3 таблицы:MS Access перекрестный запрос - через 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 

Я пытаюсь выполнить запрос CrossTab 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 и т. Д.).

Любая помощь очень ценится.

Прембо.

ответ

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

0

Я ненавижу полагаться на внешней должности и представить его как мой ответ, но это довольно крутая тема, и я не могу сделать это справедливость. Поэтому я предлагаю вам посмотреть this article.