Форум: "Базы";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
ВнизВставка записей, есть вопрос Найти похожие ветки
← →
Tornado © (2005-02-07 10:03) [0]задача такая: нужно вставить в таблицу А данные из других таблиц (другой БД), но в таблице А имеется поле для связи с другими таблицами, допустим поле "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". Спасибо
← →
Johnmen © (2005-02-07 10:17) [1]
INSERT INTO tbl_Main (ID, Dlina_uch, Kabel, Us_uchastok)
SELECT 10, tbl_Frames.FrameLength, ...
...
← →
Tornado © (2005-02-07 10:45) [2]спасибо, только теперь другой вопрос :)
в главную таблицу можно вставить записи просто так если в этой таблице поле 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:54) [3]Сначала переливаешь в первую таблицу. (справочник)
Потом переливаешь во вторую, соединяя первую с той, из которой заливаем.
← →
Tornado © (2005-02-07 11:06) [4]>> Потом переливаешь во вторую, соединяя первую с той, из которой заливаем.
если чесно то не очень понял, в первую слили данные, а дальше во втроую как? чтобы для записи в первой таблице ID был такой же во второй таблице, там же несколько записей с таким ID должны быть....блин запутался я чего то :)
← →
Johnmen © (2005-02-07 11:19) [5]Для заливки во вторую целевую (destination) тбл делаешь селект из двух таблиц:
1 - залитая первая (destination), 2 - незалитая вторая (source).
← →
Tornado © (2005-02-07 11:38) [6]у меня во вторую таблицу данные заносятся из другой БД, как и в первом посте, "залитая первая" - это уже в моей БД, (хотя по началу в нее тоже заливаются данные из бд irkpro.mdb), а "незалитая вторая" - из другой бд (irkpro.mdb), как выудить необходимые данные из irkpro.mdb да потом заполнить поле id во втрой целевой таблице значениями соответствующими id таблицы "залитой первой (destination)" :))
← →
msguns © (2005-02-07 11:55) [7]Если надо "слить" однотипные данные из разных БД, имеющих иерархическую структуру информации (основые и подчиненные элементы), то, ИМХО, не обойтись без таблиц перекодировки ID.
Дело в том, что ID мастер-таблиц в БД независимы друг от друга и, ессно, могут повторяться. Чтобы избежать конфликтов, надо в "Репликационной БД" (промежуточной) создать спец.таблицу переидентификации, где помимо ID (автоинкремент) надо еще предусмотреть поле OLDID. В эту таблицу сначала загоняются все записи мастер-таблиц основной и добавочной БД, в результате чего получаем сквозной ID. Далее с помощью простых запросов "перегоняем" деталы, связывая с мастер-записями по OLDID, и в качестве нового связующего поля берем значение нового ID.
Но это в простом случае, если в БД нет логически дублированных объектов. Если есть, то алгоритм репликации существенно усложняется. В частности, надо определить логические ключи объектов и "шаманить" с ними.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.03.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.039 c