Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Переделать select в insert
 
 автор: Bazz   (13.04.2016 в 15:49)   письмо автору
15.2 Кб
 
 

Всем Добра!

Есть запрос
SELECT product_id, attribute_id, language_id, attr_new, SUBSTRING_BY_INDEX(text, 'x', attr_new) attr
FROM oc_product_attribute, (SELECT -1 attr_new UNION SELECT -2 UNION SELECT -3) dummy
where `attribute_id` = 629
and `language_id` = 4
AND SUBSTRING_BY_INDEX(TEXT, 'x', attr_new) != ''


Запрос выполняется как надо(смприложеный файл)

Создана функция

DELIMITER //

CREATE FUNCTION SUBSTRING_BY_INDEX(Source VARCHAR(255), Delimiter VARCHAR(255), Number INT)
RETURNS VARCHAR(255)
DETERMINISTIC
NO SQL
BEGIN
IF ((LENGTH(Source) - LENGTH(REPLACE(Source, Delimiter, ''))) / LENGTH(Delimiter) >= ABS(Number) - 1)
AND (Number != 0)
THEN
RETURN TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(Source, Delimiter, Number), Delimiter, -SIGN(Number)));
ELSE
RETURN '';
END IF;
END;
//

DELIMITER ;


Что он делает. Перваначально таблица выглядит так
product_id attribute_id language_id text
701 629 4 7.5 x 28.8 x 51 см

селекст разбивает так как указано на скрине.

Вообщем нужно из этого селекта сделать Insert на добавление атрибутов с характеристиками в таблицу oc_product_attribute. Каждый параметр 7.5 x 28.8 x 51 см должен добавлятся к тому product_id к которому он прикреплён, меняется только attribute_id, а они такие
796 Высота
797 Ширина
798 Глубина

И в итоге должно получится так

product_id attribute_id language_id text
701 796 4 7.5 см
701 797 4 28.8 см
701 798 4 51 см

Сам селект разбивает верно, как переделать на insert не знаю...

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования