Форум: "Базы";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];
ВнизСинхронизация таблиц Найти похожие ветки
← →
бобёр (2002-11-21 12:49) [0]Есть 2 таблицы в одной базе: table1, table2
Таблицы имеют одинаковые поля: name,tel
Как можно синхронизировать таблицы, т.е. добавить в table2 из table1 те записи которых нет в table2?
← →
stone (2002-11-21 12:55) [1]в запросе использовать exists
← →
Prooksius (2002-11-21 12:57) [2]insert into table2 (fields) values (select fields from table1 where name not in (select name from table2))
← →
бобёр (2002-11-21 13:31) [3]select fields from table1 where name not in (select name from table2)
Этоработает
А здесь ругается на первый select после values
insert into table2 (fields) values (select fields from table1 where name not in (select name from table2))
Как вставить в следующий запрос результат предыдущего подзапроса?
insert into table2 (fields) values (?)
← →
BorisUK (2002-11-21 13:40) [4]ты надеюсь fields заменил на реальные названия полей в таблице и их количество совпадает с кол-вом полей, возвращяемым подзапросом :)?
если да то пиши реальные SQL для анализа.
← →
бобёр (2002-11-21 13:55) [5]insert into klient_pgp (firm_name,firm_address) values (select firm_name,firm_address from mail_pgp where firm_address not in (select firm_address from klient_pgp))
Вроде все правильно
Поля firm_name,firm_address есть в обоих таблицах
← →
Наталия (2002-11-21 14:16) [6]IB не поддерживает такие запросы, по-моему. Сделай через ХП.
← →
Prooksius (2002-11-21 14:28) [7]2 Наталия © (21.11.02 14:16)
Да действительно... Давно доки не читал :)
Придется через ХП.
Пробегаешься по всем строкам table1, проверяешь, не находится ли строка уже в 2 таблице и, если нет - вставляешь
← →
GLUKAS (2002-11-21 14:39) [8]IB в полне поддерживает такие запросы!!!!!!!
сам постоянно пользуюсь!
если таблицы совершенно одинаковые то -
insert into table1 select * from table2;
Однозначно!
← →
Prooksius (2002-11-21 14:44) [9]2 Наталия © (21.11.02 14:16)
Все-таки поддерживает. Поспешил я. Пример из доки (которую я начал-таки читать :-)
The next isql statement specifies values to insert into a table with a SELECT statement:
INSERT INTO PROJECTS
SELECT * FROM NEW_PROJECTS
WHERE NEW_PROJECTS.START_DATE > "6-JUN-1994";
То есть надо, чтобы таблицы были одинаковые по структуре.
← →
GLUKAS (2002-11-21 14:49) [10]Опять же не обязательно!
допустим tabl1:
num integer
name varchar(100)
pol varchar(1)
tabl2:
num integer
name varchar(100)
age integer
тогда вот это будет работать!
insert into tabl1(num,mane) select num,name from tabl2
← →
Prooksius (2002-11-21 14:52) [11]Ясно, значит просто не надо было писать Values ()
Век живи - век учись!
← →
бобёр (2002-11-21 15:05) [12]Спасибо.
Теперь другая ошибка.Validation error for column person_id
В таблице mail_pgp это триггер(+1 для каждой новой записи)
Таблица klient_pgp пока пустая и это значение пустое
Я так понимаю нужно вставлять также здесь значение.
Но эти значения в обоих таблицах будут различаться
Как это можно сделать?
← →
GLUKAS (2002-11-21 15:12) [13]insert into mail_pgp(все кроме person_id
) select(все кроме в томже порядке person_id
) from klient_pgp
← →
бобёр (2002-11-21 15:39) [14]Ок.
В таблице klient_pgp есть поле account, которого нет в таблице mail_pgp. Это поле должно остаться пустым(таким как есть).
При следующем запросе ругается на value"***null***" для поля Account
Что можно прописать в запросе?
insert into klient_pgp (firm_name,firm_address) select firm_name,firm_address from mail_pgp where firm_address not in (select firm_address from klient_pgp)
← →
GLUKAS (2002-11-21 15:56) [15]Не понял ...
как ругается?
видимо поле определено как не нулевое.....?
← →
бобёр (2002-11-21 16:04) [16]Да.
Char(20) not null;
Т.е. это означает что оно должно быть полюбому заполнено?
Если так то как в этом же запросе присвоить всем таким полям нулевые значения?
← →
GLUKAS (2002-11-21 16:11) [17]Никак можно им присвоить значения допустим пробел...
insert into klient_pgp (firm_name,firm_address,Account)
select firm_name,firm_address," " from mail_pgp
where firm_address not in (select firm_address from klient_pgp)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c