Мы собрали полезные 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,       p16FROM `oc_product` p1LEFT 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

15. Сделать все опции не обязательными в опенкарт

update oc_product_option set required = '0'

16. Как отключить категории без товаров в opencart 3

UPDATE oc_category c 
LEFT JOIN oc_product_to_category pc ON c.category_id = pc.category_id
LEFT JOIN oc_product p ON pc.product_id = p.product_id
SET c.status = 0
WHERE pc.product_id IS NULL 
OR pc.product_id=p.product_id AND p.status = 0

17. Как удалить определенный атрибут из всех товаров в opencart - в скобках указываем id атрибута, через запятую

DELETE FROM oc_product_attribute WHERE attribute_id IN (1, 2, 3, 4, 5, 6)

18. Как отключить индексацию товаров у определенной категории в OcStore 3

UPDATE `oc_product` SET `noindex`= 0 WHERE product_id IN (SELECT product_id FROM `oc_product_to_category` WHERE category_id = 1)

19. Как массово включить индексацию у категорий в OcStore 3

UPDATE `oc_category` SET `noindex` = 0

20. Как в Opencart увеличить максимальное количество символов в метатеге description

ALTER TABLE oc_product_description MODIFY meta_description VARCHAR(1000);
ALTER TABLE oc_information_description MODIFY meta_description VARCHAR(1000);
ALTER TABLE oc_category_description MODIFY meta_description VARCHAR(1000);
ALTER TABLE oc_manufacturer_description MODIFY meta_description VARCHAR(1000);

21. Как в opencart через SQL запрос присвоить всем товарам НДС

UPDATE `oc_product` SET `tax_class_id`=10

22. Как массово изменить цену опций в Opencart

* уменьшить цену, например на 20%

UPDATE oc_product p 
INNER JOIN oc_product_option_value pov ON p.product_id = pov.product_id 
SET pov.price = pov.price - (pov.price * 0.20);

* увеличить цену, например на 20%

UPDATE `oc_product` p INNER JOIN `oc_product_option_value` pov ON p.`product_id` = pov.`product_id` SET pov.`price` = pov.`price` + (pov.`price`/100*20)

* увеличить цену у определенного производителя, например на 20%

UPDATE `oc_product` p INNER JOIN `oc_product_option_value` pov ON p.`product_id` = pov.`product_id` SET pov.`price` = pov.`price` + (pov.`price`/100*20) WHERE p.`manufacturer_id` = 111

* увеличить цену у перечисленных производителей

UPDATE `oc_product` p INNER JOIN `oc_product_option_value` pov ON p.`product_id` = pov.`product_id` SET pov.`price` = pov.`price` + (pov.`price`/100*10) WHERE p.`manufacturer_id` IN (111, 112, 113)

23. Как массово добавить к цене акции процент через SQL запрос в Opencart

update oc_product_special set price=price*1.07

24. Как массово скопировать из значений атрибута в поле location, upc, isbn... через SQL запрос в Opencart

*WHERE pa.attribute_id = 1; указываем id атрибута из которого переносим значения

UPDATE oc_product p
INNER JOIN oc_product_attribute pa ON p.product_id = pa.product_id
SET p.location = pa.text
WHERE pa.attribute_id = 26;

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


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

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