#sql #запрос
Приветствую, мне надо прописать одну картинку для товаров с 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 такой запрос создавать, подскажите, как автоматизировать.
Ответы
Ответ 1
Предполагаю, что у вас есть некая таблица продуктов в которой уже существуют записи с такими 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.
Комментариев нет:
Отправить комментарий