Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.24;
Скачать: [xml.tar.bz2];




Вниз

Слияние таблиц это как? Помогите! 


Xmen   (2001-12-19 07:59) [0]

Мне нужно слият две таблицы это как можно сделать, И такая проблема у меня есть две таблицы одинаковы по смыслю, но немношко ест разница у одного чут болше полей (дополнение) и имя таблиц различаются. и как вобще можно работат с таблицами которых нужно слиять, дополнять, обновлять. какой компонент отвечает за это и как можно это сделать. Помогите пожалуста, очень нужна, свои ответы лучше посылайте по почте(я невсегда подключен к инету.) rustam.ergashev@gallabank.uz



TonnyS   (2001-12-19 11:43) [1]

Реализация зависит от задачи.
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.
Если что - пиши (можно на почту)



Xmen   (2001-12-19 14:21) [2]

Спосибо за ответ у меня таблицы отличаются тем, что некторые поля имеют другое имя, и это не нужно изменить, а копироват туда данные. Я попробовал Help->Batchmove программу но это не помогло.Индексны поля не копируются.



TonnyS   (2001-12-19 14:51) [3]

тогда запрос вида 1, а в условии не обязательно идентичные поля указывать, можно типа t1.name=t2.name_s и т.д.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.24;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.027 c
4-75720           ILYAKA                2001-11-23 18:43  2002.01.24  
Как взять список окон в Windows (жел-но с Handl-ами)


3-75476           rey_wagner            2001-12-19 17:40  2002.01.24  
Вопрос про DBGrid??


3-75506           sasa_ch               2001-12-20 13:02  2002.01.24  
как вытащить из таблицы?


1-75581           Alex007               2002-01-06 22:11  2002.01.24  
Кнопки


14-75667          MJH                   2001-11-29 16:19  2002.01.24  
AverTV Studio