Как объединить более двух таблиц Microsoft Access в одну таблицу? - PullRequest
3 голосов
/ 20 марта 2012

Допустим, у меня есть 10 таблиц, каждая таблица N имеет идентификатор и значение N.Я хочу объединить их все в одну таблицу со следующим содержимым:

ID Value1 Value2 Value3 ...

Идентификаторы уникальны, но каждая таблица может иметь любое количество записей, поэтому строка результата может быть:

001 3.1 Null 4.6 ...

Я знаю, как выполнить этот простой запрос, когда есть только 2 таблицы. Но не знаю лучшего способа сравнить значения идентификаторов из 10 таблиц.

1 Ответ

3 голосов
/ 20 марта 2012

Допустим, у вас есть 3 таблицы (или любое количество таблиц)

Table1:          Table2:           Table3
ID  Value1       ID   Value2       ID   Value3
1   A            1    AAA          1    111
2   B            2    BBB          2    222
3   C            5    EEE          3    333
                                   4    444
                                   5    555

Вы можете использовать такой запрос, чтобы убедиться, что вы получаете все возможные данные из всех таблиц:

SELECT U.ID,
       Table1.Value1,
       Table2.Value2,
       Table3.Value3
FROM   (((SELECT ID FROM Table1
          UNION
          SELECT ID FROM Table2
          UNION
          SELECT ID FROM Table3) AS U
         LEFT JOIN Table1 ON U.ID=Table1.ID)
        LEFT JOIN Table2 ON U.ID=Table2.ID)
       LEFT JOIN Table3 ON U.ID=Table3.ID; 

Результат которого:

ID    Value1    Value2     Value3
1     A         AAA        111
2     B         BBB        222
3     C                    333
4                          444
5               EEE        555    

По сути, это просто последовательность LEFT JOIN для каждой таблицы, объединенная объединением всех возможных идентификаторов во всех таблицах:

SELECT ID FROM Table1
UNION
SELECT ID FROM Table2
UNION
SELECT ID FROM Table3
...