Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вставка записей, есть вопрос


Tornado ©   (2005-02-07 10:03:00) 

задача такая: нужно вставить в таблицу А данные из других таблиц (другой БД), но в таблице А имеется поле для связи с другими таблицами, допустим поле "ID". Я составил такой запрос:

SQL.Add('INSERT INTO tbl_Main (Dlina_uch, Kabel, Us_uchastok)');
SQL.Add('SELECT tbl_Frames.FrameLength AS Dlina_uch, tbl_Frames.TypeName AS Kabel, tbl_CableParams.CableName AS Us_uchastok');
SQL.Add('FROM tbl_Frames, tbl_CableParams IN "D:\IRKPRO.mdb" WHERE tbl_Frames.CableName = tbl_CableParams.CableName');

хотелось бы еще в таблицу tbl_Main вставить в поле "ID" определенный номер, допустим "10". Спасибо


msguns   (2005-02-07 11:55:00) [1]

Если надо "слить" однотипные данные из разных БД, имеющих иерархическую структуру информации (основые и подчиненные элементы), то, ИМХО, не обойтись без таблиц перекодировки ID.
Дело в том, что ID мастер-таблиц в БД независимы друг от друга и, ессно, могут повторяться. Чтобы избежать конфликтов, надо в "Репликационной БД" (промежуточной) создать спец.таблицу переидентификации, где помимо ID (автоинкремент) надо еще предусмотреть поле OLDID. В эту таблицу сначала загоняются все записи мастер-таблиц основной и добавочной БД, в результате чего получаем сквозной ID. Далее с помощью простых запросов "перегоняем" деталы, связывая с мастер-записями по OLDID, и в качестве нового связующего поля берем значение нового ID.

Но это в простом случае, если в БД нет логически дублированных объектов. Если есть, то алгоритм репликации существенно усложняется. В частности, надо определить логические ключи объектов и "шаманить" с ними.


Tornado   (2005-02-07 11:38:00) [2]

у меня во вторую таблицу данные заносятся из другой БД, как и в первом посте, "залитая первая" - это уже в моей БД, (хотя по началу в нее тоже заливаются данные из бд irkpro.mdb), а "незалитая вторая" - из другой бд (irkpro.mdb), как выудить необходимые данные из irkpro.mdb да потом заполнить поле id во втрой целевой таблице значениями соответствующими id таблицы "залитой первой (destination)" :))


Johnmen   (2005-02-07 11:19:00) [3]

Для заливки во вторую целевую (destination) тбл делаешь селект из двух таблиц:
1 - залитая первая (destination), 2 - незалитая вторая (source).


Tornado   (2005-02-07 11:06:00) [4]

>> Потом переливаешь во вторую, соединяя первую с той, из которой заливаем.

если чесно то не очень понял, в первую слили данные, а дальше во втроую как? чтобы для записи в первой таблице ID был такой же во второй таблице, там же несколько записей с таким ID должны быть....блин запутался я чего то :)


Johnmen   (2005-02-07 10:54:00) [5]

Сначала переливаешь в первую таблицу. (справочник)
Потом переливаешь во вторую, соединяя первую с той, из которой заливаем.


Tornado   (2005-02-07 10:45:00) [6]

спасибо, только теперь другой вопрос :)
в главную таблицу можно вставить записи просто так если в этой таблице поле ID автоикрементное то оно заполняется само, но есть другая таблица в которую также вставляются записи из других таблиц, данные в таблицах идентичны, т.е.:
Таблица А (с автоинкрементом ID)
ID  FieldA   FieldB
1   ddd      ttt
2   www      rrr
3   ссс      иии
4   yyy      uuu

Таблица В (вот в нее надо занести теже значения поля ID что и в таблице А):
ID  FieldA   FieldB
1   ddd      ttt
1   ddd      ttt
2   www      rrr
2   www      rrr
3   ccc      иии
3   ссс      иии
4   yyy      uuu
4   yyy      uuu

т.е. эти две талицы А и В должны быть соеденины по принципу "один-ко-многим"
4


Johnmen   (2005-02-07 10:17:00) [7]

INSERT INTO tbl_Main (ID, Dlina_uch, Kabel, Us_uchastok)
SELECT 10, tbl_Frames.FrameLength, ...
...


Наверх

Титульная страница Поиск, карта сайта Написать письмо