Доступ - объединение двух баз данных с одинаковой структурой - PullRequest
0 голосов
/ 02 февраля 2010

Я хотел бы написать запрос, который объединяет две базы данных Access 2000 в одну.Каждая имеет 35 таблиц с одинаковыми полями и в основном уникальных данных.Есть несколько строк, которые будут иметь один и тот же «первичный ключ», и в этом случае строка из базы данных A всегда должна иметь приоритет над базой данных B. Я использую кавычки вокруг «первичного ключа», потому что базы данных генерируются без каких-либо ключей или связей.Например:

База данных A, таблица1

col1    col2
Frank   red
Debbie  blue

База данных B, таблица1

col1    col2
Harry   orange
Debbie  pink

И результаты, которые мне бы хотелось:

col1    col2
Frank   red
Harry   orange
Debbie  blue

Эти базы данных создаются и загружаются пользователями, не знакомыми с SQL, поэтому я хотел бы просто дать им запрос на копирование и вставку.Очевидно, им придется начать с импорта или связывания одной БД [in] с другой.

Я предполагаю, что мне придется создать третью таблицу с комбинированным запросом результатов, а затем удалить две другие.В идеале, однако, это просто добавило бы строки базы данных A в базу данных B. (при необходимости переопределяя).

Я, конечно, не ищу полного ответа, просто надеюсь на какой-то совет, с чего начать.У меня есть некоторый опыт работы с MySQL и я понимаю основы соединений.Можно ли сделать все это в одном запросе, или мне придется иметь отдельный для каждой таблицы?

СПАСИБО !!

Ответы [ 2 ]

1 голос
/ 02 февраля 2010

Как насчет:

SELECT t.ID, t.Field1, t.Field2 INTO NewTable FROM
(SELECT a.ID, a.Field1, a.Field2
FROM Table1 A
UNION
SELECT x.ID, x.Field1, x.Field2
FROM Table1 x IN 'C:\docs\db2.mdb'
WHERE x.ID NOT IN (SELECT ID From Table1)) t
0 голосов
/ 02 февраля 2010

Это не решение SQL, но оно может сработать так же, как если бы ваши не разбирающиеся в SQL пользователи говорили, что нужно вырезать и вставлять операторы SQL.

  1. Я предлагаю определить уникальный ключ в таблицеимеет приоритет (столбец 1).
  2. Затем скопируйте все данные из базы данных B в основную таблицу.

Это не удастся для всех дубликатов, но вставьте любой «новый»записей.Удалите ограничение уникального ключа после того, как вы это сделаете, если необходимо.

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

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