Мы собрали полезные SQL запросы для Opencart 2 и Opencart 3

Важно!!! Перед любым изменением в базе данных, необходимо делать бекап базы данных!!!

1. SQL запрос для Opencart, что бы установить количество для всех товаров 0, либо другое кол-во

UPDATE `oc_product` SET `quantity` = 0

2. SQL запрос для Opencart, что бы удалить производителей не связанных с товарами

DELETE m
FROM oc_manufacturer m
LEFT JOIN oc_product p ON
m.manufacturer_id = p.manufacturer_id
WHERE p.manufacturer_id IS NULL

3. Установить количество бонусных баллов для покупки товара равное цене в Opencart

UPDATE `product` SET points = round(price);

4. Запрос на удаление всех акций с ценой = 0 в Opencart 3 и Opencart 2

DELETE FROM `oc_product_special` WHERE price = 0

5. Как изменить количество товара в существующих опциях в opencart:

UPDATE `oc_product_option_value` set `quantity` = 100

 - или с дополнительными условиями

фиолетовым добавил строчки с условиями-привязкой к id конкретной категории товаров, конкретных опций или конкретных значений опций. На случай, если Вам нужно эти изменения сделать только для товаров какой-то конкретной группы. если нужно для всех товаров - можете просто убрать фиолетовые строки или проигнорировать (сейчас они закомментированы)

100 зеленым - новое количество товара этой опции

0 зеленым - старое количество товара этой опции. изменится на 100.

UPDATE oc_product_option_value pov
LEFT JOIN oc_product_to_category p2c
  ON pov.product_id = p2c.product_id
LEFT JOIN oc_option o
  ON o.option_id = pov.product_option_id
LEFT JOIN oc_option_value ov
  ON ov.option_value_id = pov.option_value_id
SET pov.quantity = 100
WHERE pov.quantity = 0
-- AND p2c.category_id = 69
-- AND o.option_id = 14
-- AND ov.option_value_id = 51 

6. Как привязать все товары в мультимагазине для магазинов в Opencart. Вместо xx - id нужного магазина. Категории, производители.. по этому же принципу

INSERT IGNORE INTO `oc_product_to_store` (product_id, store_id) SELECT p.product_id, xx as store_id FROM `oc_product` p

7. Как отключить доставку для всех товаров в Opencart. Массово поменять значение параметра "Необходима доставка" на "Нет":

UPDATE oc_product SET shipping=0;

8. Как заполнить поле модель (код товара) для всех товаров в Opencart. Модель будет сформирована на основе id товаров с добавлением ведущих нулей до шестизначного вида:

UPDATE oc_product SET model = LPAD(product_id,6,'000000')

9. Как заполнить поле SKU (Артикул) для всех товаров в Opencart. Артикул будет сформирован на основе id товаров с добавлением ведущих нулей до шестизначного вида:

UPDATE oc_product SET sku = LPAD(product_id,6,'000000');

10. Массовое изменение цены в Opencart:

- этот пример разделит все цены на 75.99, так мы можем перевести цены в рублях на евро.

UPDATE `oc_product` SET `price` = `price` / 95.99;

- так мы сделаем те же действий, но для тех товаров, у которых цена больше 1. Аналогично, Вы можете добавить свои условия, по другим полям.

UPDATE `oc_product` SET `price` = `price` / 65.99 WHERE `oc_product`.`price` > 1;

- нужно увеличить цену на все товары в opencart на 7%. Т.е в рамках запроса, мы можем производить математические действия +-*/.

UPDATE `oc_product` SET `price` = `price` + (`price`/100*7) WHERE `oc_product`.`price` > 1;

- вычитаем 8% от товаров определенного производителя

UPDATE `oc_product` SET `price` = `price` - (`price`/100*8) WHERE `oc_product`.`manufacturer_id` = 54;

11. Отключает товары у которых цена = 0 в Opencart

UPDATE oc_product SET oc_product.status = 0 WHERE price = 0

12. Мультимагазин на opencart 3, скопировать seo url (сео чпу), для всех магазинов. Где 1 - это id магазина куда копируем, а нуль - id магазина по умолчанию (отметил зеленым цветом).

INSERT INTO `oc_seo_url`(`store_id`, `language_id`, `query`, `keyword`)
SELECT 1, temp.language_id, temp.query, temp.keyword
FROM oc_seo_url temp
WHERE  temp.store_id = 0

13. Массово отключить товары у которых нет изображения в opencart

UPDATE `oc_product` SET `status`=0 WHERE `image`='' OR `image`='no_image.png' OR `image`='no_image.jpg' OR `image` IS NULL;

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

UPDATE oc_product SET status = 1 WHERE status = 0 AND image > ''

14. Удалить все товары с количеством равным 0... opencart 2

DELETE p1,
       p2,
       p3,
       p4,
       p5,
       p6,
       p7,
       p8,
       p9,
       p10,
       p11,
       p12,
       p13,
       p14,
       p15,
       p16
FROM `oc_product` p1
LEFT JOIN `oc_product_attribute` p2 ON (p2.product_id = p1.product_id)
LEFT JOIN `oc_product_description` p3 ON (p3.product_id = p1.product_id)
LEFT JOIN `oc_product_discount` p4 ON (p4.product_id = p1.product_id)
LEFT JOIN `oc_product_filter` p5 ON (p5.product_id = p1.product_id)
LEFT JOIN `oc_product_image` p6 ON (p6.product_id = p1.product_id)
LEFT JOIN `oc_product_option` p7 ON (p7.product_id = p1.product_id)
LEFT JOIN `oc_product_option_value` p8 ON (p8.product_id = p1.product_id)
LEFT JOIN `oc_product_recurring` p9 ON (p9.product_id = p1.product_id)
LEFT JOIN `oc_product_related` p10 ON (p10.product_id = p1.product_id)
LEFT JOIN `oc_product_reward` p11 ON (p11.product_id = p1.product_id)
LEFT JOIN `oc_product_special` p12 ON (p12.product_id = p1.product_id)
LEFT JOIN `oc_product_to_category` p13 ON (p13.product_id = p1.product_id)
LEFT JOIN `oc_product_to_download` p14 ON (p14.product_id = p1.product_id)
LEFT JOIN `oc_product_to_layout` p15 ON (p15.product_id = p1.product_id)
LEFT JOIN `oc_product_to_store` p16 ON (p16.product_id = p1.product_id)

WHERE p1.quantity = 999

Так же советуем прочитать запросы для массового удаления товаров, категорий, производителей, атрибутов, опций и очистки seo урл в Opencart 2 и Opencart 3


Комментарии 1

/ Ответить
Пишите ваши полезные коды