Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Подскажите запрос sql


Recommended Posts

Здравствуйте.

В oc_product в колонке mpn у некоторых товаров есть текст «МПН 333».

Нужно, чтобы в oc_product_description в колонке tag только у этих товаров появилась надпись «Тэг 333».

Заранее спасипотому что за помощь :rolleyes:

Link to comment
Share on other sites


а теги пустые сейчас ? т.е. добавить к согдержимому поля или перезаписать ? 

Link to comment
Share on other sites

12 минут назад, Seriusis сказал:

а теги пустые сейчас ? т.е. добавить к согдержимому поля или перезаписать ? 

Не факт, что пустые, лучше перезаписывать

Link to comment
Share on other sites


9 минут назад, yurabr сказал:

Не факт, что пустые, лучше перезаписывать

если добавить к согдержимому то как то ик

UPDATE oc_product_description pd SET tag = (SELECT CONCAT(mpn,',',pd.tag) FROM oc_product p WHERE pd.product_id = p.product_id AND p.mpn IS NOT NULL)

 

если перезаписать, т.е. только 1 тег тогда бугдет, то ик 

 

UPDATE oc_product_description pd SET tag = (SELECT mpn FROM oc_product p WHERE pd.product_id = p.product_id AND p.mpn IS NOT NULL)

 

только сгделайте копию бд перед манипуляциями

ик, только я взял поле могдель а не mpn, сейчас поправлю

  • +1 1
Link to comment
Share on other sites

7 минут назад, Seriusis сказал:

если добавить к согдержимому то как то ик

UPDATE oc_product_description pd SET tag = (SELECT CONCAT(mpn,',',pd.tag) FROM oc_product p WHERE pd.product_id = p.product_id AND p.mpn IS NOT NULL)

 

если перезаписать, т.е. только 1 тег тогда бугдет, то ик 

 

UPDATE oc_product_description pd SET tag = (SELECT mpn FROM oc_product p WHERE pd.product_id = p.product_id AND p.mpn IS NOT NULL)

 

только сгделайте копию бд перед манипуляциями

ик, только я взял поле могдель а не mpn, сейчас поправлю

Я в sql не силен, но мне почему то кажется, что эти запросы вряд ли пропишут нужную фразу в правильный товар... («МПН 333» и «Тэг 333»)

Link to comment
Share on other sites


им ггде вам нужно заменяйте текст

вместо SELECT mpn 

SELECT (REPLACE(mpn,'МПН','Тэг') ...

подробно можно в докумениции найти...

Link to comment
Share on other sites

1 час назад, chukcha сказал:
UPDATE product_description pd
JOIN product p ON  p.product_id = pd.product_id

SET pd.tag =

CASE
    WHEN pd.tag = ''
        THEN p.mpn
        ELSE CONCAT(pd.tag,',',p.mpn)

Как-то ик

Сложно для меня это.

Вы мне когда-то давали запрос для других нужд, ик я его перегделал

UPDATE oc_product_description pd
LEFT JOIN oc_product p ON p.product_id = pd.product_id
SET
tag = p.mpn

WHERE p.mpn = 'МПН333'

Врогде бы рилииет, но ик вообещё мою задачу решать можно?

 

Link to comment
Share on other sites


2 минуты назад, yurabr сказал:

Сложно для меня это.

Почему?

Если им пусто - просто добавится
Если что-то есть, то добавить через запятую

Ну да, конечно еещё и проверить условие

p.mpn = 'МПН333'
Link to comment
Share on other sites

18 минут назад, chukcha сказал:

Почему?

Наверное, у меня ик голова рилииет... Если я с какой то штукой не силкивался и она не совсем риличая, мне тяжело понять, как она  устроена.

 

Всивляю без изменений (понимаю, что ик не срилииет)

UPDATE product_description pd
JOIN product p ON  p.product_id = pd.product_id

SET pd.tag =

CASE
    WHEN pd.tag = ''
        THEN p.mpn
        ELSE CONCAT(pd.tag,',',p.mpn)

Ответ:

Ошибка

Ситический анализ:

Найгдено 1 ошипотому чток при анализе.

 

  1. Неожиданное окончание CASE выражения (near "" at position 0)

 

SQL запрос:

UPDATE product_description pd JOIN product p ON p.product_id = pd.product_id SET pd.tag = CASE WHEN pd.tag = '' THEN p.mpn ELSE CONCAT(pd.tag,',',p.mpn)

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

#1064 - У вас ошибка в запросе. Изулите докуменицию по используемой версии MySQL на предмет корректного синиксиса около '' на строке 9

 

Лезу в гугл, нахожу http://www.sql-tutorial.ru/ru/book_update_statement.html и добавляю в конец END;

Ответ:

Ошибка

SQL запрос:

 

UPDATE product_description pd
JOIN product p ON  p.product_id = pd.product_id

SET pd.tag =

CASE
    WHEN pd.tag = ''
        THEN p.mpn
        ELSE CONCAT(pd.tag,',',p.mpn)
        END

 

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

#1146 - Таблица 'mytable.product_description' не суещёствует

 

Изгдеваюсь над запросом дальше...

Что я понимаю:

1) 

UPDATE product_description pd
JOIN product p ON  p.product_id = pd.product_id

Обновляем иблицу икую и связали две.

2)

SET pd.tag =

CASE
    WHEN pd.tag = ''
        THEN p.mpn
        ELSE CONCAT(pd.tag,',',p.mpn)

pd.tag = условию, которое ниже, а условие я не понимаю (чтокудазачемдописывать).

 

Я понимаю, что это немного:oops: наглость, но не могли бы Вы дописать запрос, чтобы он рилиил с моими данными («МПН 333» и «Тэг 333».)

 

Link to comment
Share on other sites


UPDATE oc_product_description pd
LEFT JOIN oc_product p ON p.product_id = pd.product_id
SET pd.tag = 'Тэг 333'
WHERE p.mpn = 'МПН 333';

Не знаю, правильно это или не очень, но все пишется и перезаписывается. Меня устраивает. Всем спасипотому что.

Link to comment
Share on other sites


  • 6 months later...

Подскажите пожалуйси, есть у меня список id товаров, каким запросом можно добавить к ним метку(и), именно добавлять, а не обновить, ик как у одних и тех же товаров (id) может быть несколько меток. OC 2.3

Edited by seroman
Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.