powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос на создание новых атрибутов на основе имеющихся
79 сообщений из 79, показаны все 4 страниц
Запрос на создание новых атрибутов на основе имеющихся
    #39210792
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня!
Помогите сделать запросик.

Имееются товары с атрибутами такого вида.
product_id attribute_id language_id text701 629 4 7.5 x 28.8 x 51 см719 629 4 4 x 58 x 51 см1026 629 1 9.8x58x51 см1033 629 4 5x59x52 см

text это размер ВхШхГ .
Создать новые атрибуты с уникальными attribute_id(Высота,Ширина,Глубина) и к каждому товару в зависимости от поля text добавить ещё атрибуты.У многих товаров есть только ШхГ и тут нужно делать только по 2-м параметрам.
т.е
Должно быть так на примере product_id 701
product_id attribute_id language_id text701 999 4 7.5 см701 998 4 28.8 cм701 997 4 51 см
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39210853
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чём сложности? выкусывайте по одному атрибуту с использованием SUBSTRING_INDEX() и добавляйте в таблицу. Всего получится три запроса.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39211955
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в SQL не силён, поэтому прошу помощи
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212191
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
up
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212197
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaА в чём сложности? выкусывайте по одному атрибуту с использованием SUBSTRING_INDEX() и добавляйте в таблицу. Всего получится три запроса.
Из описания, эта функция берёт количество все символы до и после разделителя. В моём же примере нужно барть ещё из серидины, между разделителями.

Как между х**х взять? Притом этот параметр может быть в виде 52.2 или 58.88 или же 40 т.е количество символов разное.
**х**х**
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212215
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiraelius,

Код: sql
1.
substring_index(substring_index(string,'x',номер),'x',-1)
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212227
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirtiraelius,

Код: sql
1.
substring_index(substring_index(string,'x',номер),'x',-1)


Спасибо за ответ.

делаю так
SELECT * FROM `oc_product_attribute`
WHERE SUBSTRING_INDEX( SUBSTRING_INDEX( `text` , 'x', 1 ) , 'x' , -1 )
AND `attribute_id` =629

Если добавляю and и `attribute_id` то SUBSTRING_INDEX не фильтрует. Что я делаю не так?
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212232
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SUBSTRING_INDEX возвращает строку. Вам, наверное, надо её с чем-то сравнить?..
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212234
anvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirSUBSTRING_INDEX возвращает строку. Вам, наверное, надо её с чем-то сравнить?..

или перенести её из раздела WHERE в раздел SELECT, если её надо получить в качестве результата.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212239
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirSUBSTRING_INDEX возвращает строку. Вам, наверное, надо её с чем-то сравнить?..
Не совсем понимаю как сравнивать с чем и зачем. Нужно из определённых атрибутов(например 629) к которым привязан text вытащить значение ВхШхГ и записать в эту же таблицу но под новым атрибутом.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212241
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiraelius,

тогда см. пост anvano.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212252
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
anvanotanglirSUBSTRING_INDEX возвращает строку. Вам, наверное, надо её с чем-то сравнить?..

или перенести её из раздела WHERE в раздел SELECT, если её надо получить в качестве результата.

Спасибо за подсказку.
Делаю так
SELECT `product_id` , `attribute_id` , SUBSTRING_INDEX( SUBSTRING_INDEX( `text` , 'x', 2 ) , 'x' , -1 )
FROM `oc_product_attribute`
WHERE `attribute_id` =629

Выдаёт то что нужно.
Но как я и говорил есть позиции у которых есть ВхШхГ но и те у которых нет одного параметра а есть только ШхГ. и нужно Доп фильтровать такие позиции. Пробывал like '%x%' но так не срабатывает
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212259
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiraelius , поскольку там в данных ещё дофига лишних пробелов, нужно после каждого SUBSTRING_INDEX() тримать оставшуюся часть.

tiraeliusWHERE SUBSTRING_INDEX( SUBSTRING_INDEX( `text` , 'x', 1 ) , 'x' , -1 )
Это условие проверяет, что выражение хоть что-то возвращает. А оно обязательно что-то вернёт, если в поле text имеется хотя бы один символ, не равный пробелу или 'x'.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212285
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina tiraelius , поскольку там в данных ещё дофига лишних пробелов, нужно после каждого SUBSTRING_INDEX() тримать оставшуюся часть.

tiraeliusWHERE SUBSTRING_INDEX( SUBSTRING_INDEX( `text` , 'x', 1 ) , 'x' , -1 )
Это условие проверяет, что выражение хоть что-то возвращает. А оно обязательно что-то вернёт, если в поле text имеется хотя бы один символ, не равный пробелу или 'x'.

Спасибо за ответ. Да есть пробелы в тексте и замыкающий параметр имеет приписку см. Непойму как TRIM вписать в SELECT.
Делаю так
SELECT `product_id`,`attribute_id`, TRIM(BOTH,'' FROM substring_index(substring_index(`text`,'x',2),'x',-1) FROM `oc_product_attribute`
where
`attribute_id` = 629
но терплю фиаско.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212291
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiraeliusно терплю фиаско.Что, сервер прямо так и говорит "хозяин, мы потерпели фиаско!". Или всё-таки выводит сообщение об ошибке?
ЗЫ.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT `product_id`,`attribute_id`
, TRIM(BOTH '' FROM substring_index(substring_index(`text`,'x',2),'x',-1))

from (
select 701 product_id, 629 attribute_id, 4 language_id, '7.5 x 28.8 x 51 см' `text`
union all select 719 ,629 ,4 ,'4 x 58 x 51 см'
) t0

where 
`attribute_id` = 629

результат:product_idattribute_idTRIM(BOTH '' FROM substring_index(substring_index(`text`,'x',2),'x',-1))701629 28.8 719629 58 ЧЯДНТ?
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212302
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirtiraeliusно терплю фиаско.Что, сервер прямо так и говорит "хозяин, мы потерпели фиаско!". Или всё-таки выводит сообщение об ошибке?
ЗЫ.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT `product_id`,`attribute_id`
, TRIM(BOTH '' FROM substring_index(substring_index(`text`,'x',2),'x',-1))

from (
select 701 product_id, 629 attribute_id, 4 language_id, '7.5 x 28.8 x 51 см' `text`
union all select 719 ,629 ,4 ,'4 x 58 x 51 см'
) t0

where 
`attribute_id` = 629

результат:product_idattribute_idTRIM(BOTH '' FROM substring_index(substring_index(`text`,'x',2),'x',-1))701629 28.8 719629 58 ЧЯДНТ?

Спасибо !
А что за t0 ?
Делаю так
SELECT `product_id`,`attribute_id`
, TRIM(BOTH '' FROM substring_index(substring_index(`text`,'x',2),'x',-1))
from (
select product_id, attribute_id, language_id, text
union all select
) t0
where
`attribute_id` = 629
Ругается
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') t0
where
`attribute_id` = 629' at line 6
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212314
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiraelius,

а вы почитайте про union all - глядишь, и вопрос отпадёт сам собой.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212329
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользуйся...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
DROP FUNCTION IF EXISTS SUBSTRING_BY_INDEX;

DELIMITER //

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

DELIMITER ;


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
mysql> SET @str = '123. 456 .789';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT
    ->   pos
    -> , SUBSTRING_BY_INDEX(@str, '.', pos) str
    -> , LENGTH(SUBSTRING_BY_INDEX(@str, '.', pos)) len
    -> FROM (
    ->   SELECT 0 pos UNION
    ->   SELECT 1 UNION
    ->   SELECT 2 UNION
    ->   SELECT 3 UNION
    ->   SELECT 4) temp;
+-----+------+------+
| pos | str  | len  |
+-----+------+------+
|   0 |      |    0 |
|   1 | 123  |    3 |
|   2 | 456  |    3 |
|   3 | 789  |    3 |
|   4 |      |    0 |
+-----+------+------+
5 rows in set (0.01 sec)
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212350
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправка.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
DROP FUNCTION IF EXISTS SUBSTRING_BY_INDEX;

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) >= Number - 1) AND (Number > 0)
		THEN
			RETURN TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(Source, Delimiter, Number), Delimiter, -1));
		ELSE
			RETURN '';
	END IF;
END;
//

DELIMITER ;
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212362
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Спасибо за ответ.
Я в SQL не силён.Непойму как использовать... Надо подставить значения в данные строки, вот так?

CREATE FUNCTION SUBSTRING_BY_INDEX(text VARCHAR(255), x VARCHAR(255), 1 INT)
IF ((LENGTH(text) - LENGTH(REPLACE(text, x, ''))) / LENGTH(x) >= 1 - 1) AND (1 > 0)
THEN
RETURN TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(text, x, 1), x, -1));
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212366
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirtiraelius,

а вы почитайте про union all - глядишь, и вопрос отпадёт сам собой.

Почитал, про t0 так и не понял. :|
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212376
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiraeliusЯ в SQL не силён.Непойму как использовать...
Первый код (в исправленном варианте) запустить однократно.
После этого станет доступна функция SUBSTRING_BY_INDEX(), которую можно использовать в любых запросах.
Пример её использования - во втором блоке кода.

Т.е. твой запрос будет выглядеть типа
Код: sql
1.
2.
SELECT product_id, attribute_id, language_id, attr_pos, SUBSTRING_BY_INDEX(text, 'x', attr_pos) attr
FROM oc_product_attribute, (SELECT 1 attr_pos UNION SELECT 2 UNION SELECT 3) dummy
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212380
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня ощущение что мы уходим в другую сторону.

Вот запрос который работает
Код: sql
1.
2.
3.
4.
5.
SELECT `product_id`,`attribute_id`, TRIM(BOTH '' FROM substring_index(substring_index(`text`,'x',2),'x',-1))
from 
`oc_product_attribute`
where 
`attribute_id` = 629


701 629 28.8702 629 51 см703 629 51 см

Вот сами записи
701 629 4 7.5 x 28.8 x 51 см 701 629 1 7.5 x 28.8 x 51 см 702 629 1 29 x 51 см 703 629 1 58 x 51 см

Нужно
что бы получилось, как пример
999 - Высота
998 - Ширина
997 - Глубина

701 999 4 7.5см702 997 4 51 см703 998 4 58 см

Т.е добавить всем по см и отфильтровать ВхШхГ от ШхГ чтобы не получилось каши.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212381
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiraelius,

данные, из которых производится select, получаются подзапросом. каждый подзапрос должен иметь свой алиас(имя). вот "t0" и есть это имя.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212384
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinatiraeliusЯ в SQL не силён.Непойму как использовать...
Первый код (в исправленном варианте) запустить однократно.
После этого станет доступна функция SUBSTRING_BY_INDEX(), которую можно использовать в любых запросах.
Пример её использования - во втором блоке кода.

Т.е. твой запрос будет выглядеть типа
Код: sql
1.
2.
SELECT product_id, attribute_id, language_id, attr_pos, SUBSTRING_BY_INDEX(text, 'x', attr_pos) attr
FROM oc_product_attribute, (SELECT 1 attr_pos UNION SELECT 2 UNION SELECT 3) dummy



Вот что выдаёт

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
Вероятно, SQL-запрос содержит ошибку. При наличии таковой, ниже будет выведена ошибка MySQL-сервера, облегчающая диагностику проблемы.

ERROR: Неизвестная пунктуация @ 108
STR: //
SQL: DROP FUNCTION IF EXISTS SUBSTRING_BY_INDEX;# MySQL вернула пустой результат (т.е. ноль строк).


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) >= Number - 1) AND (Number > 0)
		THEN
			RETURN TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(Source, Delimiter, Number), Delimiter, -1));
		ELSE
			RETURN '';
	END IF;
END;
//

DELIMITER ;

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) >= Number - 1) AND (Number > 0)
		THEN
			RETURN TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(Source, Delimiter, Number), Delimiter, -1));
		ELSE
			RETURN '';
	END IF;
END;
//

DELIMITER ;

SQL-запрос:

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) >= Number - 1) AND (Number > 0) THEN RETURN TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(Source, Delimiter, Number), Delimiter, -1)); ELSE RETURN ''; END IF; END; // DELIMITER ;

Ответ MySQL: Документация

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RETURNS VARCHAR(255)
DETERMINISTIC
NO SQL
BEGIN
    IF ((LENGTH(Source) - LENGT' at line 1
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212385
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiraeliusи отфильтровать ВхШхГ от ШхГ чтобы не получилось кашиЯНХНП. Если в описании нет высоты, то в результате что должно получиться? Три записи, из которых одна - с нулевой высотой, или две записи (только Ш и Г)?
И никуда в стороны мы не уходим, запрос Акины - практически готовое решение.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212389
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirtiraeliusи отфильтровать ВхШхГ от ШхГ чтобы не получилось кашиЯНХНП. Если в описании нет высоты, то в результате что должно получиться? Три записи, из которых одна - с нулевой высотой, или две записи (только Ш и Г)?
И никуда в стороны мы не уходим, запрос Акины - практически готовое решение.

Если нет Высоты то ничего. Из примера 1 запись с Высотой 2 записи без.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212390
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiraeliusВот что выдаётпочему я скопировал запрос из твоего сообщения, запустил его у себя, и он создал функцию безо всяких ошибок?
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212393
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiraeliusЕсли нет Высоты то ничего.ну тогда добавить в запрос having attr is not null
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212395
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поправочка - having attr<>''
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212397
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirtiraeliusВот что выдаётпочему я скопировал запрос из твоего сообщения, запустил его у себя, и он создал функцию безо всяких ошибок?
Может версии sql разные?
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212410
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

Я через phpmyadmin запрос ввожу. В корне базы
Версия сервера: 5.1.72-log
Версия MySQL-клиента: 5.1.57
phpMyAdmin - 2.11.11.3
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212415
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiraeliusЯ через phpmyadmin запрос ввожу.точный текст запроса - такой?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
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) >= Number - 1) AND (Number > 0)
		THEN
			RETURN TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(Source, Delimiter, Number), Delimiter, -1));
		ELSE
			RETURN '';
	END IF;
END;
//

DELIMITER ;

...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212420
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да вот скрин приложил
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212425
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пардон в скрин верхняя строка не влезла. вот
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212429
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Через консоль попробывал
на этой строке ошибку выдаёт
Код: sql
1.
RETURN TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(Source, Delimiter, Number), Delimiter, -1));






Код: sql
1.
ERROR 1046 (3D000): No database selected
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212433
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiraelius,

"delimiter //" перед определением функции где, ***?
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212440
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

Спасибо что тратите на меня нервы и время. Но я понять не могу где ошибка. Я ж копирую ctr+c.
Вот сделал как первоначально Akшna писала
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212444
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiraeliusВот сделалНу и? Сработало?
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212447
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
неа
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212448
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. добавьте в табл два поля W и H
2. заполните эти два поля запросом

Код: sql
1.
2.
3.
UPDATE MyTable 
SET w = SUBSTRING_INDEX( SUBSTRING_INDEX( `text` ,................ ) , ............, .....................), 
h = SUBSTRING_INDEX( SUBSTRING_INDEX( `text` ,................ ) , ............, .....................)
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212451
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, это какой-то загон пыхадмина. Практически им не пользовался, так что посоветовать ничего не могу.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212452
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiraelius,

Delimiter - слово из синтаксиса. Назовите входной параметр функции как-то иначе.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212461
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Умные клиенты - зло. Тупые - зло в квадрате.

tiraelius , почему не работаете консольным клиентом? нахрена нужен phpadmin?
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212470
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сейчас попробую
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212489
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE FUNCTION SUBSTRING_BY_INDEX(Source VARCHAR(255), Delimiter VARCHAR(255), ' at line 2


вот что в консоли выдаёт
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212499
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так ввожу
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
mysql> DELIMITER //
mysql> CREATE FUNCTION SUBSTRING_BY_INDEX(Source VARCHAR(255), Delimiter VARCHAR(255), Number INT)
    -> 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) >= Number - 1) AND (Number > 0)
    -> THEN
    ->
Display all 2814 possibilities? (y or n)
    ->  TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(Source, Delimiter, Number), Delimiter, -1));
    -> ELSE
    ->
Display all 2814 possibilities? (y or n)
    ->  '';
    ->
Display all 2814 possibilities? (y or n)
    ->  '';
    -> RETURN '';
    -> END IF;
    -> END;
    -> //
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212503
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я извиняюсь в консоли всё получилось. не копипастилось полностью.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212731
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Функция значит прописалась.
Запускаю запрос
Код: sql
1.
2.
SELECT product_id, attribute_id, language_id, attr_pos, SUBSTRING_BY_INDEX(text, 'x', attr_pos) attr
FROM oc_product_attribute, (SELECT 1 attr_pos UNION SELECT 2 UNION SELECT 3) dummy


как мне в него WHERE поставить по номеру атрибута? потому что сейчас по всем атрибутам фигачит
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212737
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а сам допёр.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212753
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скрипт значит выдаёт такую штуку.
Когда у товара 2 атрибута
58.3x51.3 см
1050 629 4 1 58.31050 629 4 2 51.3 см1050 629 4 3
Когда 3
7.5 x 28.8 x 51 см
701 629 4 1 7.5701 629 4 2 28.8701 629 4 3 51 см

Путает немного, 1 -это допустим Высота, 2-Ширина 3 - Глубина. Позиция с номером 1050 имеет только ШхГ а поставилось под В и Ш
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212765
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, поставилось 1 и 2. То, что это именно ширина и глубина, знаете вы, сервер об этом откуда может знать?
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212800
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir,

Это понятно. Что нужно изменить?
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212840
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно ли условие вставить типа if then
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39212842
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или допустим сделать отдельный запрос который все атрибуты имеюшие 2 значение перекидывает в другой attribute_id и там уже для них можно запустить этот запрос уже в другом формате.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39213156
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiraelius, можно так
Код: sql
1.
2.
3.
4.
5.
6.
7.
case when SUBSTRING_BY_INDEX(text, 'x', 3)='' 
 then case when attr_pos=1 
  then '' 
  else SUBSTRING_BY_INDEX(text, 'x', attr_pos-1) 
  end
 else SUBSTRING_BY_INDEX(text, 'x', attr_pos) 
end
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39213235
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо за ответ!
Как его в действующий запрос вставить?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT product_id, attribute_id, language_id, attr_pos, SUBSTRING_BY_INDEX(text, 'x', attr_pos) attr
FROM oc_product_attribute, (SELECT 1 attr_pos UNION SELECT 2 UNION SELECT 3) dummy 
where `attribute_id` = 629 and `language_id` = 4
case when SUBSTRING_BY_INDEX(text, 'x', 3)='' 
 then case when attr_pos=1 
  then '' 
  else SUBSTRING_BY_INDEX(text, 'x', attr_pos-1) 
  end
 else SUBSTRING_BY_INDEX(text, 'x', attr_pos) 
end
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39213303
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Следующая корректировка функции.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
DROP FUNCTION IF EXISTS SUBSTRING_BY_INDEX;

DELIMITER //

-- Выделение подстроки с заданным номером Number из строки Source по заданному разделителю Delimiter.
-- Если Number отрицательно - отсчёт ведётся с конца.
CREATE FUNCTION SUBSTRING_BY_INDEX(Source VARCHAR(255), Delimiter VARCHAR(255), Number INT)
RETURNS VARCHAR(255)
DETERMINISTIC
NO SQL
BEGIN
DECLARE DelimitersCount INT;
SET DelimitersCount = (LENGTH(Source) - LENGTH(REPLACE(Source, Delimiter, ''))) / LENGTH(Delimiter);
	IF (DelimitersCount >= Number - 1) AND (Number > 0)
		THEN
			RETURN TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(Source, Delimiter, Number), Delimiter, -1));
	ELSEIF (DelimitersCount >= -Number - 1) AND (Number < 0)
		THEN
			RETURN TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(Source, Delimiter, Number), Delimiter, 1));
	ELSE
			RETURN '';
	END IF;


END;
//

DELIMITER ;


Проверка
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
mysql> SELECT
    ->   pos
    -> , SUBSTRING_BY_INDEX(@str, '.', pos) str
    -> , LENGTH(SUBSTRING_BY_INDEX(@str, '.', pos)) len
    -> FROM (
    ->   SELECT 0 pos UNION 
    ->   SELECT 1 UNION 
    ->   SELECT 2 UNION 
    ->   SELECT 3 UNION 
    ->   SELECT 4 UNION
    ->   SELECT -1 UNION 
    ->   SELECT -2 UNION 
    ->   SELECT -3 UNION 
    ->   SELECT -4) temp;
+-----+------+------+
| pos | str  | len  |
+-----+------+------+
|   0 |      |    0 |
|   1 | 123  |    3 |
|   2 | 456  |    3 |
|   3 | 789  |    3 |
|   4 |      |    0 |
|  -1 | 789  |    3 |
|  -2 | 456  |    3 |
|  -3 | 123  |    3 |
|  -4 |      |    0 |
+-----+------+------+
9 rows in set (0.01 sec)
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39213326
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и традиционно "оптимизация":
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
DROP FUNCTION IF EXISTS SUBSTRING_BY_INDEX;

DELIMITER //

-- Выделение подстроки с заданным номером Number из строки Source по заданному разделителю Delimiter.
-- Если Number отрицательно - отсчёт ведётся с конца.
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 ;
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39213433
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вбил прошло.
сам запрос как изменится?
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39213475
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiraeliusсам запрос как изменится?
Судя по
tiraeliusПозиция с номером 1050 имеет только ШхГ а поставилось под В и Ш
тебе надо выделять от конца, а не от начала.
Ну а дальше как бы мозг приложить...
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39213774
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Фунцию менять? В самом запросе изменение порядка цифр ничего не дела.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39213787
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiraeliusизменение порядка цифрВместо 1-2-3 ты использовал 10-20-30? или что имелось в виду под словом "порядок"?
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39213832
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

ну запрос идёт (SELECT 1 attr_pos UNION SELECT 2 UNION SELECT 3)
я сделал (SELECT 3 attr_pos UNION SELECT 2 UNION SELECT 1)
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39213840
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*рукалицо*
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39213879
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina*рукалицо*

Ну блин что? Я ж не силён в sql ни разу, когда логику не понимаю то и не знаю что менять.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39213893
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или тут надо менять?
Код: sql
1.
2.
3.
4.
5.
		RETURN TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(Source, Delimiter, Number), Delimiter, -1));
	ELSEIF (DelimitersCount >= -Number - 1) AND (Number < 0)
		THEN
			RETURN TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(Source, Delimiter, Number), Delimiter, 1));
	ELSE



Delimiter, -1 на 1
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39213905
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiraeliusЯ ж не силён в sql ни разу, когда логику не понимаю то и не знаю что менять.А просто прочитать? хрен с им, с кодом - но комментарии, ипона мать, на русском написаны!
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39213926
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinatiraeliusЯ ж не силён в sql ни разу, когда логику не понимаю то и не знаю что менять.А просто прочитать? хрен с им, с кодом - но комментарии, ипона мать, на русском написаны!

Большое спасибо! Значит функцию менять.

В функции меняю

Код: sql
1.
2.
3.
4.
NO SQL
BEGIN
	IF ((LENGTH(Source) - LENGTH(REPLACE(Source, Delimiter, ''))) / LENGTH(Delimiter) >= ABS(Number) 1) 
		AND (Number != 0)




ТАк?
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39214088
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор-- Если Number отрицательно - отсчёт ведётся с конца.

В этой стрроке менять?

Код: sql
1.
2.
3.
4.
NO SQL
BEGIN
	IF ((LENGTH(Source) - LENGTH(REPLACE(Source, Delimiter, ''))) / LENGTH(Delimiter) >= ABS(Number) 1) 
		AND (Number != 0)
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39214283
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так скорее, чтобы количество символов было - , верно?. Подскажите кто нить

RETURN TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(Source, Delimiter, - Number), Delimiter, -SIGN(Number)));

За вознаграждение готов отблагодарить кто поможет до конца доделать.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39214289
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiraelius , код функции дан в ОКОНЧАТЕЛЬНОМ ВАРИАНТЕ. Не трогайте его. Исправляйте ТОЛЬКО текст запроса с использованием этой функции.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39214311
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina tiraelius , код функции дан в ОКОНЧАТЕЛЬНОМ ВАРИАНТЕ. Не трогайте его. Исправляйте ТОЛЬКО текст запроса с использованием этой функции.




Спасибо что ещё на связи.

Именил запрос на

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT product_id, attribute_id, language_id, attr_pos, SUBSTRING_BY_INDEX(
TEXT,  'x', attr_pos
)attr
FROM oc_product_attribute, (

SELECT -1attr_pos
UNION SELECT -2
UNION SELECT -3
)dummy
WHERE  `attribute_id` =629
AND  `language_id` =4



получилось!

701 629 4 -1 51 см701 629 4 -2 28.8701 629 4 -3 7.5719 629 4 -1 51 см719 629 4 -2 58719 629 4 -3 41026 629 4 -1 51 см1026 629 4 -2 581026 629 4 -3 9.81035 629 4 -1 51 см1035 629 4 -2 601035 629 4 -3 1033 629 4 -1 52 см1033 629 4 -2 591033 629 4 -3 51034 629 4 -1 52 см1034 629 4 -2 591034 629 4 -3 51041 629 4 -1 50.5 см1041 629 4 -2 57.51041 629 4 -3 51042 629 4 -1 52 см1042 629 4 -2 591042 629 4 -3 1044 629 4 -1 52 см1044 629 4 -2 591044 629 4 -3 1049 629 4 -1 51.3 см1049 629 4 -2 58.31049 629 4 -3

Уже почти то что надо. Осталось сделать Insert INTO и добавить всем по см где нет.

см можно добавить так
Код: sql
1.
2.
UPDATE `oc_product` set `model`= concat (model ,'-01') where 
`attr_pos`= 1



Но и Insert сново потребуется помощь...
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39214334
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tiraeliusполучилось
Добавьте ещё во WHERE условие
Код: sql
1.
AND SUBSTRING_BY_INDEX(TEXT,  'x', attr_pos) != ''


Нафига нужны "пустые" атрибуты?
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39214359
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akinatiraeliusполучилось
Добавьте ещё во WHERE условие
Код: sql
1.
AND SUBSTRING_BY_INDEX(TEXT,  'x', attr_pos) != ''


Нафига нужны "пустые" атрибуты?

Да так лучше.

Код: sql
1.
2.
3.
4.
5.
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) != ''



новые атрибуты

796 4 Высота797 4 Ширина798 4 Глубина

Под Insert надо attribute_id подставлять новые, как?
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39214515
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
Мне на почту напиши, tirael777@gmail.com . поскольку тут лички нет.
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39214752
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята как можно решить этот вопрос оч надо
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39214862
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё так получилось
Код: sql
1.
2.
3.
4.
5.
6.
insert into oc_product_attribute (product_id, attribute_id, language_id, text)
SELECT product_id, if(attr_new=-1, 798, if(attr_new=-2, 797, 796)), language_id, SUBSTRING_BY_INDEX(text, 'x', attr_new)
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) != '';
...
Рейтинг: 0 / 0
Запрос на создание новых атрибутов на основе имеющихся
    #39215855
tiraelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть необходимость добавлять по 1 атрибуту а не сразу все 3.

Код: sql
1.
2.
3.
4.
5.
6.
SELECT product_id, attribute_id, language_id, attr_new, SUBSTRING_BY_INDEX(text, 'x', attr_new) attr
FROM oc_product_attribute, (SELECT -2 attr_new) dummy
where `attribute_id` = 75
and `product_id` = 227
AND SUBSTRING_BY_INDEX(TEXT,  'x', attr_new) != ''
order by `product_id`



запрос такой, он работает.

но insert не хочет

Код: sql
1.
2.
3.
4.
5.
6.
insert into oc_product_attribute (product_id, attribute_id, language_id, text)
SELECT product_id, if(attr_new=-2, 796), language_id, SUBSTRING_BY_INDEX(text, 'x', attr_new)
FROM oc_product_attribute, (SELECT -2 attr_new ) dummy
where `attribute_id` = 75
and `product_id` = 227
AND SUBSTRING_BY_INDEX(TEXT,  'x', attr_new) != '';



подскажет кто?
...
Рейтинг: 0 / 0
79 сообщений из 79, показаны все 4 страниц
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос на создание новых атрибутов на основе имеющихся
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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