Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / INSERT в цикле / 14 сообщений из 14, страница 1 из 1
21.07.2014, 16:50:12
    #38702136
Ильгизон
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT в цикле
Доброго времени суток уважаемые.
БД Mysql
Такая задача есть таблица ofuser

usernamenameemail...

и есть таблица ofroster

rosterID username jid sub ask recv nick

Нужно бы как нибудь сделать инсерт вида в цикле

INSERT INTO
ofroster (rosterid, username, jid, sub , ask, recv, nick )
VALUES
((select max(rosterid))+1, 'USERNAME', 'admin@admin.ru', '3', '-1', '-1','admin' )


Чтоб запрос прошелся по всем USERNAME из первой таблицы и понадобавлял строки во второй таблице наращивая сам rosterid

остальные поля фиксированные...

Я так понимаю нужно это все сделать в цикле только не соображу как
...
Рейтинг: 0 / 0
21.07.2014, 16:59:44
    #38702157
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT в цикле
ИльгизонЯ так понимаю нужно это все сделать в цикленеправильно понимаете
читайте про auto_increment и про insert ... select
...
Рейтинг: 0 / 0
21.07.2014, 20:22:54
    #38702318
Ильгизон
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT в цикле
таааак, rosterid auto increment я выставил

потом хотел провести:

INSERT INTO ofroster (username) SELECT ofuser.username
FROM ofuser

а он мне: MySQL Database Error: Field 'jid' doesn't have a default value


мол полю 'jid' тоже че то нужно присваивать... не подскажете как дописать код чтоб присваивать полю 'jid' всегда одинаковое значение типа 'admin@admin.ru'
...
Рейтинг: 0 / 0
21.07.2014, 20:51:16
    #38702330
Ильгизон
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT в цикле
ВСё догнал как сделать, всем спасибо:))

INSERT INTO ofroster (username, jid, sub , ask, recv, nick) SELECT ofuser.username, 'admin@admin.ru', '3', '-1', '-1','admin'
FROM ofuser
...
Рейтинг: 0 / 0
22.07.2014, 09:10:24
    #38702505
Ильгизон
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT в цикле
Теперь нужно 74 раза прогнать инсерт: INSERT INTO ofrostergroups (rank, groupName) Values ('0', 'ПУНКТЫ');
тут то всё такие цикл нужен ???
...
Рейтинг: 0 / 0
22.07.2014, 10:06:11
    #38702560
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT в цикле
Ильгизон,

такое можно и циклом
а можно
Код: sql
1.
2.
3.
INSERT INTO ofrostergroups (rank, groupName) select ('0', 'ПУНКТЫ')
from <любая таблица с не менее чем 74 записями>
limit 74 -- order by можно не писать, т.к. неважно, какие данные оттуда будут читаться;
...
Рейтинг: 0 / 0
22.07.2014, 10:51:00
    #38702613
Ильгизон
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT в цикле
спасибо tanglir :))

уже успел было сделать так

DELIMITER //
CREATE PROCEDURE groupss () begin
DECLARE i INT DEFAULT 1;
WHILE i<74 DO
INSERT INTO ofrostergroups (rank, groupName) Values ('0', 'ПУНКТЫ');
SET i=i+1;
END WHILE;
end //

CALL groupss();


но твой метод был бы проще :))
...
Рейтинг: 0 / 0
22.07.2014, 12:16:29
    #38702721
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT в цикле
tanglirИльгизон,

такое можно и циклом
а можно
Код: sql
1.
2.
3.
INSERT INTO ofrostergroups (rank, groupName) select ('0', 'ПУНКТЫ')
from <любая таблица с не менее чем 74 записями>
limit 74 -- order by можно не писать, т.к. неважно, какие данные оттуда будут читаться;

например, на пустой базе:
Код: sql
1.
2.
3.
4.
5.
6.
INSERT INTO ofrostergroups (rank, groupName) select ('0', 'ПУНКТЫ')
from -- 3*5*5=75
  (select 1 a union all select 2 union all select 3)a
 ,(select 1 b union all select 2 union all select 3 union all select 4 union all select 5)b
 ,(select 1 c union all select 2 union all select 3 union all select 4 union all select 5)c
limit 74
...
Рейтинг: 0 / 0
22.07.2014, 12:25:24
    #38702730
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT в цикле
Ильгизонспасибо tanglir :))

уже успел было сделать так

DELIMITER //
CREATE PROCEDURE groupss () begin
DECLARE i INT DEFAULT 1;
WHILE i<74 DO
INSERT INTO ofrostergroups (rank, groupName) Values ('0', 'ПУНКТЫ');
SET i=i+1;
END WHILE;
end //

CALL groupss();


но твой метод был бы проще :))

ещо его метод правильный... в твоём будет вставка 73!!! записей (i=1,2,3,...,73) - всего 73
...
Рейтинг: 0 / 0
22.07.2014, 12:41:08
    #38702760
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT в цикле
Cygapb-007
Код: sql
1.
-- 3*5*5=75

я в таких случаях не заморачиваюсь, делаю 10 в степени N и ставлю лимит :)
...
Рейтинг: 0 / 0
22.07.2014, 12:44:42
    #38702763
Ильгизон
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT в цикле
да да, это я уже исправил

alex564657498765453Ильгизонспасибо tanglir :))

уже успел было сделать так

DELIMITER //
CREATE PROCEDURE groupss () begin
DECLARE i INT DEFAULT 1;
WHILE i<74 DO
INSERT INTO ofrostergroups (rank, groupName) Values ('0', 'ПУНКТЫ');
SET i=i+1;
END WHILE;
end //

CALL groupss();


но твой метод был бы проще :))

ещо его метод правильный... в твоём будет вставка 73!!! записей (i=1,2,3,...,73) - всего 73
...
Рейтинг: 0 / 0
22.07.2014, 14:04:58
    #38702887
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT в цикле
tanglirCygapb-007
Код: sql
1.
-- 3*5*5=75

я в таких случаях не заморачиваюсь, делаю 10 в степени N и ставлю лимит :)да так короче по тексту получается:) чем 2 раза по 10 набирать
ну, и для примера неофиту, так сказать...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
06.08.2015, 11:27:34
    #39024159
Zvitman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT в цикле
tanglirCygapb-007
Код: sql
1.
-- 3*5*5=75

я в таких случаях не заморачиваюсь, делаю 10 в степени N и ставлю лимит :)

дайте пример плз.
...
Рейтинг: 0 / 0
06.08.2015, 13:30:38
    #39024306
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
INSERT в цикле
Zvitmanдайте пример плз.
Код: sql
1.
2.
3.
4.
5.
6.
7.
INSERT INTO ofrostergroups (rank, groupName) select ('0', 'ПУНКТЫ')
from 
  (select 1 a union all select 2 union ... select 10) a1,
  (select 1 a union all select 2 union ... select 10) a2,
...
  (select 1 a union all select 2 union ... select 10) aN
limit сколько_надо
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / INSERT в цикле / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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