Перейти к содержанию
Petr

Можно ли SQL запросом выполнить условие? Ну или 2-3 мя

Рекомендуемые сообщения

Есть 2 таблицы

`oc_product_attribute` (
`product_id` int(11) NOT NULL,
`attribute_id` int(11) NOT NULL,
`language_id` int(11) NOT NULL,
`text` text NOT NULL,
PRIMARY KEY (`product_id`,`attribute_id`,`language_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AVG_ROW_LENGTH=22;

и

oc_product_description` (
`product_id` int(11) NOT NULL AUTO_INCREMENT,
`language_id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,

Возможно ли выполнить условия следующее: Если в таблице oc_product_description в столбце name есть определенны словосочетания типа Toyota, то в таблицу oc_product_attribute из oc_product_description нужно скопировать соответствующие поля product_id, language_id, а для полей attribute_id и text значения ввести самостоятельно. Я думаю всем понятно зачем это нужно. По идее не плохой модуль можно сделать, который массово будет атрибуты проставлять для ленивых.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я понимаю что такая конструкция есть, но я не так силен в MYSQL, это только скелет, что бы выполнить всю череду необходимых действий, нужно знать полный набор функций который даст результат.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну так осваивайте MySQL а то получается запрос в стиле "напишите за меня и на халяву".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я сомневаюсь, что кому-то из форумчан под силу написать в один SQL-запрос то, что желает автор.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну я например знаю как сделать вот этот кусок запросом

в таблицу oc_product_attribute из oc_product_description нужно скопировать соответствующие поля product_id, language_id

insert into oc_product_attribute (product_id, language_id) select product_id, language_id from oc_product_description where name like '%Toyota%';
скопирует значения (product_id, language_id) из oc_product_description в oc_product_attribute.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Petr, задачу довольно сложно решать, если не знать что у вас еще на уме. А сделать это только средствами SQL вообще головоломка.

Какой смысл просто вставлять данные в таблицу oc_product_attribute?

Аттрибуты хранятся в пяти таблицах, а не в одной. И все таблицы между собой связаны внешними ключами.

Вот сделали мы

INSERT INTO oc_product_attribute SET product_id='число1', language_id='1', text='Тойота'

Даже если индекс на трех колонках нам позволит создать такую запись, поле atribute_id у нас будет 0.

Ну и что за значение атрибута продукта, которое не привязано к самому атрибуту, который хранится в таблице oc_attribute.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты


INSERT INTO oc_product_attribute

SELECT product_id, 'ID атрибута, взятое с потолка' AS attribute_id, language_id, 'Текст из головы Петра' AS text

FROM oc_product_description WHERE name LIKE '%Toyota%'

А если очень хочется - давайте, создавайте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Petr, задачу довольно сложно решать, если не знать что у вас еще на уме. А сделать это только средствами SQL вообще головоломка.

Какой смысл просто вставлять данные в таблицу oc_product_attribute?

Аттрибуты хранятся в пяти таблицах, а не в одной. И все таблицы между собой связаны внешними ключами.

Вот сделали мы

INSERT INTO oc_product_attribute SET product_id='число1', language_id='1', text='Тойота'

Даже если индекс на трех колонках нам позволит создать такую запись, поле atribute_id у нас будет 0.

Ну и что за значение атрибута продукта, которое не привязано к самому атрибуту, который хранится в таблице oc_attribute.

Смотрите вот мы создали атрибуты, каждому присвоился свой id, и мы эти id знаем. в ос по крайней мере я нашел только одну таблицу которая в итоге отвечает за привязки атрибутов к товару это oc_product_attribute, в это таблице всего 4 столбца 2 из них product_id, language_id можно проставить автоматом. А оставшиеся attribute_id это просто ссылка на атрибут id которого нам известно т.к. мы его создали. Ну и поле text я так понял это просто поле которое пользователь вводит сам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Смотрите вот мы создали атрибуты, каждому присвоился свой id, и мы эти id знаем. в ос по крайней мере я нашел только одну таблицу которая в итоге отвечает за привязки атрибутов к товару это oc_product_attribute, в это таблице всего 4 столбца 2 из них product_id, language_id можно проставить автоматом. А оставшиеся attribute_id это просто ссылка на атрибут id которого нам известно т.к. мы его создали. Ну и поле text я так понял это просто поле которое пользователь вводит сам.

Так и есть. В один запрос я написал как сделать. Только придется запускать много раз для каждого атрибута.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну да, спасибо буду пробовать но вы подумайте какой спрос на модули такого формата на сайте opencart.com. Абсолютно все "Batch или Mass или Bulk" модули имеют большой спрос 100+ скачиваний это как минимум при стоимости от 25 до 50 $. Почему бы и не заработать :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну да, спасибо буду пробовать но вы подумайте какой спрос на модули такого формата на сайте opencart.com. Абсолютно все "Batch или Mass или Bulk" модули имеют большой спрос 100+ скачиваний это как минимум при стоимости от 25 до 50 $. Почему бы и не заработать :-)

Простите за оффтоп. Купил магнитолу в машину, поехал ставить, машина на гарантии, самому ставить нельзя. Подсоединение двух проводков 1000р. Надо завязывать с программированием, буду магнитолы ставить :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Простите за оффтоп. Купил магнитолу в машину, поехал ставить, машина на гарантии, самому ставить нельзя. Подсоединение двух проводков 1000р. Надо завязывать с программированием, буду магнитолы ставить :-)

Простите за оффтоп :-) Ну на самом деле такая философия может расширить кругозор, чем больше поворотов в жизни тем она интереснее, может быть магнитолы на самом деле призвание, я лично видел как бодибилдеры в 40 лет иконы писать начинали. :-D

p/s причем правша иконы рисовал левой рукой т.к. правой не мог

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.