SQL запрос на две базы

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
nomadfromx
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 09.02.2004 (Пн) 6:59

SQL запрос на две базы

Сообщение nomadfromx » 10.02.2004 (Вт) 6:32

У меня есть 2 mdb-файла. Хочу их объединить. Пытался открыть рекордсет вида SELECT [поле1], [поле2] FROM [имя базы1/запрос] UNION SELECT [поле1], [поле2] FROM [имя базы2/запрос]; но он не дает так делать.
Просто копировать у меня не получится: в базах идут повторяющиеся строки и мне нужно их отсекать, а сами базы не проиндексированы - использовать Find нельзя, т.к. записей в каждой базе за 250 тыс.
Кто подскажет? (Не хотелось бы копировать из баз таблицы в новую базу)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.02.2004 (Вт) 10:44

Операция UNION

Создает запрос на объединение, который объединяет результаты нескольких независимых запросов или таблиц.

Синтаксис
Код: Выделить всё
[TABLE] запрос_1 UNION [ALL] [TABLE] запрос_2 [UNION [ALL] [TABLE] запрос_n [ ... ]]


В одной операции UNION можно объединить в любом наборе результаты нескольких запросов, таблиц и инструкций SELECT. В следующем примере объединяется существующая таблица "Новые счета" и инструкции SELECT:
Код: Выделить всё
TABLE [Новые счета] UNION ALL
SELECT *
FROM Клиенты
WHERE СуммаЗаказа > 1000;


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

nomadfromx
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 09.02.2004 (Пн) 6:59

Сообщение nomadfromx » 13.02.2004 (Пт) 6:00

Что-то не получается. Пример: SELECT dateserial(год, месяц, день) AS [Датарождения] FROM base IN base.mdb - OK. SELECT dob AS [Датарождения] FROM All_Data IN Settlers.mdb - OK. Год, месяц, день - integer. dob - date. А их объединение UNION ALL - пусто (при UNION - ошибка использования NULL). В чем может быть дело?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.02.2004 (Пт) 10:49

table base union select * from settlers
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

nomadfromx
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 09.02.2004 (Пн) 6:59

Сообщение nomadfromx » 16.02.2004 (Пн) 6:04

table base union select * from settlers

Явно не то, т.к. я писал уже - структура баз base и settlers отличается. Поэтому я и пытался использовать dateserial.
Впрочем, я плюнул на все, скомпоновал в одну базу и разобрался окончательно с импортом - глупо, но это разовая операция


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 4

    TopList