Мы собрали полезные 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;

25. Как добавить товар во все родительские категории в OpenCart через SQL запрос

Иногда бывает, что каталог товаров уже заполнен, но каждый товар привязан только к одной категории нижнего уровня. Однако, чтобы товар отображался во всех родительских категориях, достаточно выполнить один запрос к базе данных MySQL.

Рассмотрим пример товара «Точечный светильник №1» и следующую иерархию категорий:

Светильники-Точечные светильники-Встроенные

Сейчас товар отображается только в категории «Встроенные», но мы хотим, чтобы он был доступен и в других связанных категориях. Если у нас много товаров и различных категорий с иерархиями, добавление товаров в родительские категории вручную становится трудоемким и времязатратным процессом.

делаем SQL запрос:

INSERT INTO oc_product_to_category (product_id, category_id)
SELECT p.product_id, c2.category_id
FROM oc_product p
INNER JOIN oc_product_to_category ptc ON p.product_id = ptc.product_id
LEFT JOIN oc_category_path cp ON ptc.category_id = cp.category_id
LEFT JOIN oc_category c1 ON cp.category_id = c1.category_id
LEFT JOIN oc_category c2 ON cp.path_id = c2.category_id
WHERE c1.category_id <> c2.category_id;

Для улучшения производительности запроса можно создать индексы на столбцах, которые используются в операторах JOIN и WHERE, например:

CREATE INDEX idx_product_id ON oc_product (product_id);
CREATE INDEX idx_category_id ON oc_product_to_category (category_id);
CREATE INDEX idx_path_id ON oc_category_path (path_id);
CREATE INDEX idx_category_id_2 ON oc_category (category_id);
Применение этих индексов может существенно сократить время выполнения запроса, особенно если таблицы содержат большое количество записей. Обратите внимание, что префикс таблиц базы данных может отличаться, поэтому его следует заменить на ваш собственный. В приведенных запросах используется префикс «oc_».

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


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

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