![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обновление БД Access [D7, Access]
DimonS © (2007-02-14 09:36:00)Доброго дня всем, и с праздником тоже :)
Такой вопрос возник при обновлении таблиц Access, находящихся в разных mdb-файлах.
Пишу такой запрос.
INSERT INTO Autos (Code, Number1, Number2, StateNo, BoxNo, Model ) IN 'D:\Dispatcher.mdb'
SELECT Code, Number1, Number2, StateNo, BoxNo, Model
FROM Autos AS AA IN 'D:\BD\Dispatcher.mdb';
Запрос выполняется, нормально. Но здесь поле Code ключевое, и изменять его нельзя, т.е. если в первой таблице есть такой номер записи, то ее нужно пропустить, не вставлять. Если дописать в конце запроса:
WHERE Code<>AA.Code,
то не вставляется вообще ни одна запись, даже если такой и нет в таблице.
Как обойти такой трабл? Перебором записей в выборке не особо хочется делать, одним запросом в любом случае намного быстрее выполняется.
Sergey13 (2007-02-14 10:59:00) [1]> [3] DimonS © (14.02.07 10:50)
INSERT INTO Autos (Code, Number1, Number2, StateNo, BoxNo, Model ) IN 'D:\Dispatcher.mdb'
SELECT Code, Number1, Number2, StateNo, BoxNo, Model
FROM Autos AS AA IN 'D:\BD\Dispatcher.mdb';
WHERE not exists (select 1 from Autos IN 'D:\Dispatcher.mdb' A1 where A1.Code<>AA.Code)
Как то так.
С синтаксисом аксеса не дружу. 8-)
DimonS (2007-02-14 10:50:00) [2]
> Sergey13 © (14.02.07 09:42) [1]
> Надо отсеивать ненужные в самом селективном запросе отдельно,
> например с помощью exists.
А как можно отсеить их? Или перед вставкой нужно сравнить обе таблицы друг с другом и выбрать нужные для вставки записи? Тогда как это сделать? Вряд ли, наверное, одним запросом можно сделать и сравнение и вставку?
Sergey13 (2007-02-14 09:44:00) [3]> не видит вставляемую таблицу.
в смысле ту в которую идет вставка
Sergey13 (2007-02-14 09:42:00) [4]Селективный запрос не видит вставляемую таблицу. Надо отсеивать ненужные в самом селективном запросе отдельно, например с помощью exists.