Как объединить две таблицы в Access, используя SQL. Две таблицы имеют несколько общих столбцов, но также имеют несколько не общих столбцов - PullRequest
1 голос
/ 24 февраля 2020

Я пытаюсь объединить две таблицы, используя запрос в MSAccess, используя SQL.

В таблице 1 есть следующие столбцы:

ID, address, rent, tax, basement, garage

В таблице 2 есть следующие столбцы:

ID, address, rent, price, sold_date

В конечном выводе я хочу

ID, address, rent, tax, price, basement, garage, sold_date вместе.

Идентификаторы в двух таблицах совсем не совпадают. Это похоже на объединение двух таблиц вместе с одинаковыми именами столбцов и оставление разных столбцов в разных столбцах.

Я попытался использовать полное внешнее объединение в MSAccess, что уже сложно, но требует, чтобы две таблицы имели одинаковую структуру.

select * from Table1 left join Table2 On Table1.ID = Table2.ID Union select * from Table1 right join Table2 On Table1.ID = Table2.ID

Выше кодов - мой текущий код, который извлекает данные без объединения двух таблиц с одним и тем же именем столбцов. Это извлечено из https://support.office.com/en-us/article/join-tables-and-queries-3f5838bd-24a0-4832-9bc1-07061a1478f6

Вывод выглядит так:

Table1.ID, Table1.address, Table1.rent, Table1.price, Table1.sold_date, Table2.ID, Table2.address, Table2.rent, Table2.price, Table2.sold_date

Есть ли удобный способ сделать это?

Спасибо!

Ответы [ 2 ]

1 голос
/ 24 февраля 2020

Вы можете смоделировать полное внешнее объединение в Access, используя объединение левого и правого объединения:

SELECT t1.ID, t1.address, t1.rent, t1.tax, t2.price, t2.basement, t2.garage, t2.sold_date 
FROM Table1 t1
LEFT JOIN Table2 t2 ON t1.ID = t2.ID
UNION ALL
SELECT t1.ID, t1.address, t1.rent, t1.tax, t2.price, t2.basement, t2.garage, t2.sold_date
FROM Table1 t1
RIGHT JOIN Table2 t2 ON t1.ID = t2.ID
WHERE t1.id IS NULL;
0 голосов
/ 24 февраля 2020

Другой метод - сгенерировать все идентификаторы и использовать LEFT JOIN:

select t1.*, t2.*
from ((select id from Table1
       union   -- on purpose to remove duplicates
       select id from table2
      ) as i left join
      Table1 as t1
      on i.ID = t1.ID 
     ) left join
     Table2 as t2
     on i.ID = t2.ID ;

Однако решение Тима также должно работать. В некоторых версиях MS Access может потребоваться заменить UNION на представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...