powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / insert select
3 сообщений из 3, страница 1 из 1
insert select
    #39526442
ssm116
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня. Возник вопрос по поводу добавления данных с одной таблицы в другую. Есть 3 таблицы:
tab1:id,name,kod_id;
tab2:kod_id,length,line;
tab3:id,name,length,curdate;

Суть в том что нужно добавить данные из таблицы tab2 в tab3 у которых line = (к примеру "5").пример кода:
Код:

Код: sql
1.
'INSERT into tab3(id,name,length,curdate) values (tab3_id.nextval,(select kode_id from tab2 where line=5),(select length from tab2 where line=5),sysdate)



Это только начало что бы легче было понять мою задачку на самом деле данные с поля kod_i из tab2 сравнивается со значением kod_id из tab1 и в tab3 идет уже не kod_id а то значение которое соответствует в таблице tab1
Код:
Код: sql
1.
(select tab1.id from tab1 where tab1.kode_id = (select kode_id from tab2 where line = 5))



тоесть в итоге в tab3.name идут значения с tab1.id
Получается из tab2 берутся значения поля kode_id у который line = 5, эти значения идут через tab1 и tab1.id у которых tab1.kode_id равны tab2.kode_id идут на замену tab2.kode_id в tab3.name. но с этим тоже все понятно. Сделал вот так
Код:

Код: sql
1.
(select tab1.id from tab1 where tab1.kode_id=(select kode_id from tab2 where line = 5))



. в итоге вышел вот такой запрос::::
Код:

Код: sql
1.
INSERT into tab3(id,name,length,curdate) values (tab3_id.nextval (select tab1.id from tab1 where tab1.kode_id=(select kode_id from tab2 where line = 5)),(select length from tab2 where line=5),sysdate).



и этот запрос сработает только если в tab2 всего одна строка у которого line = 5. а если их больше то выходит естественно ошибка. потому что при первом же запросе " (select tab1.id from tab1 where tab1.kode_id=(select kode_id from tab2 where line = 5))" ответ запроса tab1.kode_id=[массив полученный при запросе]. вопрос как это сделать...Надеюсь более менее разъяснил что и как. тут каша но вникнуть надеюсь получится. нужно сделать как бы цикл запроса.
...
Рейтинг: 0 / 0
insert select
    #39526494
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начните с чтения документации по INSERT ... SELECT Syntax .
И вообще забудьте про INSERT .. VALUES - это всего лишь убогая обёртка.
Код: sql
1.
2.
INSERT (fields) 
VALUES (values1), (values2), ...

эквивалентно
Код: sql
1.
2.
3.
4.
5.
6.
INSERT (fields)
SELECT (values1)
UNION ALL
SELECT (values2)
UNION ALL
...

но избавлено от дебильных подзапросов.
...
Рейтинг: 0 / 0
insert select
    #39527298
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ssm116,

СУБД какая?
tab3_id.nextval - это больше на Оракл похоже, чем на MySQL.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / insert select
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]