Приветствую, мне надо прописать одну картинку для товаров с id от 1 до 1261
Команда
INSERT INTO `catalogue_productimage` (`id`, `original`, `caption`, `display_order`, `date_created`, `product_id`)
VALUES (1, 'images/products/2016/09/none.png', '', 0, '2016-09-29 11:07:36', 1);
делает нужное для товара с id 1. Не в ручную же 1261 такой запрос создавать, подскажите, как автоматизировать.
Ответ
Предполагаю, что у вас есть некая таблица продуктов в которой уже существуют записи с такими id и вы хотите в связанную с ней таблицу изображений вставить указанные строки. Если так, то вы можете написать что то вроде:
INSERT INTO `catalogue_productimage` (`id`, `original`, `caption`, `display_order`,
`date_created`, `product_id`)
select id, 'images/products/2016/09/none.png', '', 0, '2016-09-29 11:07:36', id
from products
where id between 1 and 1261
Если такой таблицы нет, то можно воспользоваться самой же таблицей catalogue_productimage. Для этого вставляем в нее вашу первую запись, а последующие вставляем несколькими запросами вроде таких (если в таблице изначально только 1 запись):
INSERT INTO `catalogue_productimage` (`id`, `original`, `caption`, `display_order`,
`date_created`, `product_id`)
select id+1, original, caption, display_order, date_created, id+1
from catalogue_productimage;
INSERT INTO `catalogue_productimage` (`id`, `original`, `caption`, `display_order`,
`date_created`, `product_id`)
select id+2, original, caption, display_order, date_created, id+2
from catalogue_productimage;
INSERT INTO `catalogue_productimage` (`id`, `original`, `caption`, `display_order`,
`date_created`, `product_id`)
select id+4, original, caption, display_order, date_created, id+4
from catalogue_productimage;
Фокус в том, что каждый последующий запрос создает в 2 раза больше записей, чем предыдущий, таким образом что бы дойти до значений около 1261 нам понадобится не более 11 таких запросов. Запросы отличаются друг от друга только прибавлением к ID очередной степени двойки. В последнем запросе нам надо будет ограничить максимальный id, запрос тогда получит условие where id<=1261-1024
Комментариев нет:
Отправить комментарий