SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 25.10.2010 19:25:27

Hasper
Участник
Зарегистрирован: 25.10.2010
Сообщений: 3

Запрос на добавление вычисляемых полей

Всем доброго времени суток...
помогите написать запрос на добавление записей в таблицу..
есть таблица в которой есть поле с серийным номером и кучей другой информации
нужно написать запрос который добавит несколько записей в таблице с полями эдентичными друг другу..
отличатся должно только одно поле с серийным номером
например

sn        nazvanie    date
===================
20001   produkt    25.10.2010
20002   produkt    25.10.2010
20003   produkt    25.10.2010
20004   produkt    25.10.2010
20005   produkt    25.10.2010
20006   produkt    25.10.2010
20007   produkt    25.10.2010
20008   produkt    25.10.2010

====
Как видно нужно добавить кучу записей с серийным номером начинающимся с 20001 и заканчивающимся 20008
количество записей может быть произвольным


Зарание спасибо

Неактивен

 

#2 25.10.2010 22:38:24

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Запрос на добавление вычисляемых полей

Делаете вспомогательную таблицу с одной колонкой заполненой номерами от 1 до числа, которое будет заведомо больше, чем число единовременно добавляемых данных.

test >select * from ii;
+---+
| i |
+---+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |



insert into table_name select @sn-1, 'produkt','25.10.2010' from ii, (select @sn:=20001,@n:=8) x where if(i<=@n,(@sn:=@sn+1) or (@i:=@i+1),0);
 

Неактивен

 

#3 26.10.2010 02:35:44

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Запрос на добавление вычисляемых полей

Или как предельный случай — написать 10 запросов, в которых в качестве id
(если установлен AUTO_INCREMENT) написан NULL:
INSERT INTO tablename VALUES (NULL, 'product', '2010-10-25');

Неактивен

 

#4 26.10.2010 03:24:03

Hasper
Участник
Зарегистрирован: 25.10.2010
Сообщений: 3

Re: Запрос на добавление вычисляемых полей

paulus написал:

Или как предельный случай — написать 10 запросов, в которых в качестве id
(если установлен AUTO_INCREMENT) написан NULL:
INSERT INTO tablename VALUES (NULL, 'product', '2010-10-25');

Спасибо опробую.. второй метод наверное не подойдет т.к. не всегда именно 10 записей будет добовлятся... да и невсегда..следующая группа номеров будет продолжением предыдущей

Неактивен

 

#5 26.10.2010 16:07:03

vaspet
Завсегдатай
Зарегистрирован: 11.03.2009
Сообщений: 83

Re: Запрос на добавление вычисляемых полей

Пуст' таблица ii будет , как описал vasya

Тогда:

INSERT INTO table_name SELECT 20000+ii.i AS sn, nazvanie, date FROM table_name JOIN ii WHERE sn=20000 limit 8;
 

Числа 20000, 8 взяты из вашего примера

Неактивен

 

#6 26.10.2010 17:19:25

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Запрос на добавление вычисляемых полей

Этот запрос будет работать при условии, что в таблице существует запись с sn=20000.
А это далеко не очевидно, так как серийники могут идти кусками для разных партий/товаров.

Неактивен

 

#7 26.10.2010 17:37:45

vaspet
Завсегдатай
Зарегистрирован: 11.03.2009
Сообщений: 83

Re: Запрос на добавление вычисляемых полей

Я исходил из того, что в таблице имеется запис' которую надо продублироват'.

Если нет - тогда еше проше:

INSERT INTO table_name SELECT 20000+i AS sn, "nazvanie", "date" FROM ii limit 8;

Неактивен

 

#8 26.10.2010 17:54:50

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Запрос на добавление вычисляемых полей

Точно. Что-то я слишком всё усложнилsmile

Неактивен

 

#9 27.10.2010 01:27:40

Hasper
Участник
Зарегистрирован: 25.10.2010
Сообщений: 3

Re: Запрос на добавление вычисляемых полей

Вот спасибо)) огромное... одна голова хорошо.. а две еще лучше))

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson