Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Вставить данные в две таблицы


Автор: Atata 6.7.2011, 01:17
Есть две таблицы:
Код

 CREATE TABLE  `test1` (
`id` INT NOT NULL AUTO_INCREMENT ,
`data1` VARCHAR( 255 ) NOT NULL ,
`data2` VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY (  `id` )
) ENGINE = MYISAM ;

CREATE TABLE  `test2` (
`id` INT NOT NULL AUTO_INCREMENT ,
`test1_id` INT NOT NULL ,
`data` VARCHAR( 255 ) NOT NULL ,
PRIMARY KEY (  `id` )
) ENGINE = MYISAM ;


test2.test1_id = test1.id

Нужно одновременно заполнить две таблицы большим количеством данных, при этом сохранив связь.
Данных будет много (больше тысячи), заполняются скриптом.
Как это можно сделать?

Автор: FINANSIST 6.7.2011, 08:45
Цитата(Atata @  6.7.2011,  01:17 Найти цитируемый пост)
 при этом сохранив связь.
test2.test1_id = test1.id


FK не нашел  а значит связи нет


Цитата(Atata @  6.7.2011,  01:17 Найти цитируемый пост)
Как это можно сделать

insert into 

Автор: Atata 6.7.2011, 13:09
Код

FK не нашел  а значит связи нет


что это значит?

Через INSERT TO понятно, я делаю вставку в test1, получаю test1.id (который AUTO_INCREMENT), теперь мне нужно вставить в test2 и заполнить test2.test1_id. 
получается вставка через два запроса. а у меня данных пару тысяч. получается минимум две тысячи запросов в бд?

Автор: Данкинг 6.7.2011, 13:30
Atata, а чем обычный INSERT INTO ....... не устраивает? Или я чего-то не понимаю?

Автор: Atata 6.7.2011, 13:32
Я же объясняю: данных очень много.
Чтобы мне вставить одно поле, нужно два инсерта (сделать первый инсерт, получить last_insert_id, сделать второй insert)
Если я гружу 10к данных - это 20к запросов. Хотелось бы это как то оптимизировать

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)