Запрос MS Access CrossTab - через 3 таблицы - PullRequest
1 голос
/ 12 мая 2010

У меня есть следующие 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-запрос CrossTab, чтобы получить:

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

Сложной задачей является маркировка строк / столбцов соответствующими именами из таблиц имен.

Я могу использовать MS Access для разработки 2 запросов,

  1. создать объединение таблицы названий фруктов / стран с таблицей Sweetness
  2. выполнить кросс-таблицу

Однако у меня проблемы с выполнением одного запроса. Я пытался вложить SQL первого запроса во второй, но, похоже, он не работает.

К сожалению, мое решение должно быть полностью SQL, так как это встроенный SQL-запрос (не может полагаться на конструктор запросов в MS Access и т.

Любая помощь с благодарностью.

Prembo.

Ответы [ 2 ]

1 голос
/ 12 мая 2010

Как насчет:

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 голосов
/ 12 мая 2010

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

...