![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Слияние таблиц это как? Помогите! [D5, Paradox, Oracle, ]
Xmen © (2001-12-19 07:59:00)Мне нужно слият две таблицы это как можно сделать, И такая проблема у меня есть две таблицы одинаковы по смыслю, но немношко ест разница у одного чут болше полей (дополнение) и имя таблиц различаются. и как вобще можно работат с таблицами которых нужно слиять, дополнять, обновлять. какой компонент отвечает за это и как можно это сделать. Помогите пожалуста, очень нужна, свои ответы лучше посылайте по почте(я невсегда подключен к инету.) rustam.ergashev@gallabank.uz
TonnyS (2001-12-19 14:51:00) [1]тогда запрос вида 1, а в условии не обязательно идентичные поля указывать, можно типа t1.name=t2.name_s и т.д.
Xmen (2001-12-19 14:21:00) [2]Спосибо за ответ у меня таблицы отличаются тем, что некторые поля имеют другое имя, и это не нужно изменить, а копироват туда данные. Я попробовал Help->Batchmove программу но это не помогло.Индексны поля не копируются.
TonnyS (2001-12-19 11:43:00) [3]Реализация зависит от задачи.
1. Если просто в первую добавить записи из второй, которой в первой нет то запрос типа (выборка, ещё не добавление):
SELECT t2.* FROM <table2> t2
WHERE (SELECT count(t1.*) FROM <table1> t1
WHERE t1.f1=t2.f1 AND t1.f2=t2.f2 AND...{все поля кроме ключевого})=0
вроде так. Потом в цикле пробежаться по полученной выборке и повносить в table1 записи из неё. Можно сразу запросом внести, но я предпочитаю в цикле, чтоб лог вести.
2. Таблицы формируются в разных местах и их периодически согласовывать надо. Тогда в таблице добавить 2 целочисленных поля, например Serv и CompStat. В первое записываеш 0 - для главного рабочего места, 1,2,... - для подчиненного. В CompStat - 0 - если главное рабочее место ИЛИ Добавление на подчинённом, 1 - если Изменение записи на подчинённом.
тогда простым запросом
SELECT * FROM table2 WHERE Serv<>0
получаеш все записи, сделанные на подчинённом, а по полю CompStat смотриш, было ли изменение записи.
После внесения всех записей в table1 просто копируеш её в table2.
Если что - пиши (можно на почту)