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

Запрос в бд перенос значения из одного поля в другое

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

Уважаемые разработчики, помогите пожалуйста составить запросы в бд:
1) Нужно в таблице oc_product_description взять значение meta_description и поставить его для name у всех товаров. Т.е. что бы наименованием товара стало такое же как мета дескрипшен, если метадескрипшен пустое, то пропустить.

2) Нужно всем товарам из категории category_id=361 поставить в таблице oc_product значение weight = 0.3 Т.е. у всех товаров из определенной категории установить значение вес.

Благодарю.

Изменено пользователем cp7

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


Ссылка на сообщение
Поделиться на другие сайты
UPDATE oc_product_description SET name = meta_description

второй по аналогии

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


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

krumax, благодарю)

Пытаюсь написать второй запрос. Задача в том, что weight  в одной таблице, а category_id в другой, написал обновление полей:

 

UPDATE oc_product SET weight = 0,3

 

и выборку нужных товаров из другой таблицы:

 

SELECT *
  FROM oc_product
 WHERE oc_product.product_id IN(
     SELECT product_id AND category_id = 369
       FROM oc_product_to_category)

 

ни как не пойму как это все объединить

 

UPDATE oc_product SET weight = 0,3 
 WHERE oc_product.product_id IN(
     SELECT product_id AND category_id = 369
       FROM oc_product_to_category)

 

по разному пробовал

 

UPDATE oc_product SET weight = 0,3

WHERE product_id IN (
SELECT product_id FROM oc_product_to_category
WHERE category_id = 369 )

 

знаний не хватает

Изменено пользователем cp7

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


Ссылка на сообщение
Поделиться на другие сайты
UPDATE oc_product p LEFT JOIN oc_product_to_category p2c ON ( p2c.product_id = p.product_id ) SET weight = 0.3
WHERE p2c.category_id =361

 

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


Ссылка на сообщение
Поделиться на другие сайты
On 12.12.2017 at 10:30 PM, krumax said:

UPDATE oc_product p LEFT JOIN oc_product_to_category p2c ON ( p2c.product_id = p.product_id ) SET weight = 0.3
WHERE p2c.category_id =361

 

А если товар не принадлежит ни к одной категории или же просто отсутствует в oc_product_to_category?

 

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


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

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

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

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

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

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

Войти

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

Войти

  • Похожий контент

    • От Aky
      Как передать POST параметр через ajax в файл controller модуля OpenCart ?
       
      Есть модуль "latest"  Файл контроллера latest.php, нужно передать туда параметр width через Ajax/Jquery  
       
      Как обратится к этому файлу? 
       
      Как работать с Ajax знаю, как параметры передать знаю, как принять знаю, но как обратится к нужному файлу в OpenCart?
       
      При попытках обращения по "url:' скрипт выдает ошибку  "404 (not found)"
       
      Пробовал вот так:
      url: 'index.php?route=extension/module/latest',  url: 'index.php?route=module/latest',  url: '/catalog/controller/extension/module/latest',   
      Если перейти на прямую по ссылки: "/catalog/controller/extension/module/latest.php"  выдает ошибку HTTP ERROR 500
    • От Mila80
      Здравствуйте. Помогите пожалуйста, кто может, Долго грузятся прайсы с товарами, больше 12 000 шт., при загрузке большого кол-ва выкидывает с админки с ошибкой 504 Gateway Time-out.
      Обнаружила медленные запросы, больше недели с одного IP ежедневно по 6-8 шт., время 6-9 секунд.
      Один из:
      SELECT (IF (LCASE(pd.name) LIKE '%goodyear ultra grip ice 2%', 60, 0) + IF (LCASE(pd.name) LIKE'goodyear%', 80, 0) + IF (LCASE(pd.name) LIKE '%goodyear%', 8, 0) + IF (LCASE(pd.name) LIKE 'ultra%', 80, 0) + IF (LCASE(pd.name) LIKE '%ultra%', 8, 0) + IF (LCASE(pd.name) LIKE 'grip%', 80, 0) + IF (LCASE(pd.name) LIKE'%grip%', 8, 0) + IF (LCASE(pd.name) LIKE 'ice%', 80, 0) + IF (LCASE(pd.name) LIKE '%ice%', 8, 0) + IF(LCASE(pd.name) LIKE '2%', 80, 0) + IF (LCASE(pd.name) LIKE '%2%', 8, 0) + IF (LCASE(pd.description) LIKE'%goodyear ultra grip ice 2%', 20, 0) + IF (LCASE(pd.description) LIKE '%goodyear%', 2, 0) + IF(LCASE(pd.description) LIKE '%ultra%', 2, 0) + IF (LCASE(pd.description) LIKE '%grip%', 2, 0) + IF(LCASE(pd.description) LIKE '%ice%', 2, 0) + IF (LCASE(pd.description) LIKE '%2%', 2, 0) + IF (LCASE(pd.tag)LIKE '%goodyear%', 9, 0) + IF (LCASE(pd.tag) LIKE '%ultra%', 9, 0) + IF (LCASE(pd.tag) LIKE '%grip%', 9, 0) + IF(LCASE(pd.tag) LIKE '%ice%', 9, 0) + IF (LCASE(pd.tag) LIKE '%2%', 9, 0)) AS relevance, p.product_id FROMoc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) LEFT JOINoc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_product_attribute pa ON(p.product_id = pa.product_id) WHERE pd.language_id = '1' AND p.STATUS = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND ( (LCASE(pd.name) LIKE '%goodyear%') OR (LCASE(pd.name) LIKE'%ultra%') OR (LCASE(pd.name) LIKE '%grip%') OR (LCASE(pd.name) LIKE '%ice%') OR (LCASE(pd.name) LIKE'%2%') OR (LCASE(pd.description) LIKE '%goodyear%') OR (LCASE(pd.description) LIKE '%ultra%') OR(LCASE(pd.description) LIKE '%grip%') OR (LCASE(pd.description) LIKE '%ice%') OR (LCASE(pd.description)LIKE '%2%') OR (LCASE(pd.tag) LIKE '%goodyear%') OR (LCASE(pd.tag) LIKE '%ultra%') OR (LCASE(pd.tag) LIKE'%grip%') OR (LCASE(pd.tag) LIKE '%ice%') OR (LCASE(pd.tag) LIKE '%2%') OR (LCASE(pa.text) LIKE'%goodyear%' AND pa.language_id = '1' ) OR (LCASE(pa.text) LIKE '%ultra%' AND pa.language_id = '1' ) OR(LCASE(pa.text) LIKE '%grip%' AND pa.language_id = '1' ) OR (LCASE(pa.text) LIKE '%ice%' AND pa.language_id = '1' ) OR (LCASE(pa.text) LIKE '%2%' AND pa.language_id = '1' ) OR (LCASE(p.model) LIKE '%goodyear%') OR(LCASE(p.model) LIKE '%ultra%') OR (LCASE(p.model) LIKE '%grip%') OR (LCASE(p.model) LIKE '%ice%') OR(LCASE(p.model) LIKE '%2%') OR (LCASE(p.sku) = 'goodyear') OR (LCASE(p.sku) = 'ultra') OR (LCASE(p.sku) = 'grip') OR (LCASE(p.sku) = 'ice') OR (LCASE(p.sku) = '2') OR (LCASE(p.upc) = 'goodyear') OR (LCASE(p.upc) = 'ultra') OR (LCASE(p.upc) = 'grip') OR (LCASE(p.upc) = 'ice') OR (LCASE(p.upc) = '2') OR (LCASE(p.ean) = 'goodyear') OR (LCASE(p.ean) = 'ultra') OR (LCASE(p.ean) = 'grip') OR (LCASE(p.ean) = 'ice') OR (LCASE(p.ean)= '2') OR (LCASE(p.jan) = 'goodyear') OR (LCASE(p.jan) = 'ultra') OR (LCASE(p.jan) = 'grip') OR (LCASE(p.jan) = 'ice') OR (LCASE(p.jan) = '2') OR (LCASE(p.isbn) = 'goodyear') OR (LCASE(p.isbn) = 'ultra') OR (LCASE(p.isbn) = 'grip') OR (LCASE(p.isbn) = 'ice') OR (LCASE(p.isbn) = '2') OR (LCASE(p.mpn) = 'goodyear') OR (LCASE(p.mpn) = 'ultra') OR (LCASE(p.mpn) = 'grip') OR (LCASE(p.mpn) = 'ice') OR (LCASE(p.mpn) = '2') ) GROUP BY p.product_id ORDER BY relevance DESC, LCASE(pd.name) ASC LIMIT 0,30
      id select_type table partitions type possible_keys key key_len ref rows filtered Extra   1 SIMPLE p NULL ALL PRIMARY NULL NULL NULL 10089 3.33 Using where; Using temporary; Using filesort 1 SIMPLE p2s NULL eq_ref PRIMARY,store_id PRIMARY 8 diacar_db.p.product_id,const 1 100.00 Using index 1 SIMPLE pd NULL eq_ref PRIMARY,language_id PRIMARY 8 diacar_db.p.product_id,const 1 100.00 NULL 1 SIMPLE pa NULL ref PRIMARY PRIMARY 4 diacar_db.p.product_id 749 100.00 Using where    
      Вроде как, у некоторых таблиц не используются индексы и грубо сканирование идет. ПОМОГИТЕ установить правильно индексы или другие возможные варианты.
       
       
      Что проделано:
      Заказано на хостинке Memcache - не помогло.
      Отключено Подсчет кол-ва товаров;
      Отключено filterpro - не помогло.
       
       
    • От mario512
      Добрый вечер. Подскажите какие существенные отличия данных конструкций:
      INSERT INTO `oc_product_attribute`(`product_id`,`attribute_id`,`language_id`,`text`)VALUES(100,16,1,"xczczxc") и
      INSERT INTO oc_product_attribute SET product_id = 101, attribute_id = 25, language_id = 1, text = "xczczxc" И какую лучше использовать?
    • От Eldaeron
      Здравствуйте, помогите. Не сильный в mysql, но нужно выбрать некоторую информацию.
       
      Из готовых заказов, те что выполненны нужно взять те что заказали с этого года по сегодня, легко:
      SELECT * FROM oc_order WHERE oc_order.order_status_id = 19 AND oc_order.date_modified BETWEEN '2018-01-01 00:00:00' AND '2018-02-02 23:59:59' Например нашло 30 заказов, скажем ид 3000 - 3030, как дальше выбрать все товары, это таблица oc_order_product
       
      Через цикл foreach? Или модифицировать 1 запрос вот так?
      SELECT * FROM oc_order_product WHERE oc_order_product.order_id in (SELECT oc_order.order_id FROM oc_order WHERE oc_order.order_status_id = 19 AND oc_order.date_modified BETWEEN '2018-01-01 00:00:00' AND '2018-02-02 23:59:59') И потом ище выбрать только те товары у которых производитель Apple (manufacturer_id = 1)
       
      В таблице oc_order_product нет колонки manufacturer, но зато она есть в oc_product
       
      Как тут быть? Что-то думаю нужно взять JOIN, но как сделать запрос так и не понял)
       
      Какими программами вы пользуетесь для построенния таких сложных запросов mysql для разработки своих дополнений?
       
      Надеюсь на понимание, спасибо.
    • От newbember
      Чего и как править, чтобы отключить поиск в описаниях товаров? Меня устраивает поиск только по модели/названию.
  • Последние посетители   0 пользователей онлайн

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

×

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

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