Мы собрали полезные SQL-запросы для Opencart 2 и Opencart 3
Важно!!! Перед любым изменением в базе данных необходимо делать бэкап! Как сделать бэкап базы данных — зависит от вашего хостинга.
1. Установить количество всех товаров в 0 или другое значение
UPDATE `oc_product` SET `quantity` = 0;
2. Удалить производителей, не связанных с товарами
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. Установить количество бонусных баллов равным цене товара
UPDATE `oc_product` SET points = ROUND(price);
4. Удалить все акции с ценой = 0
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 -- Только для товаров из категории 69 -- AND o.option_id = 14 -- Только для опции с ID 14 -- AND ov.option_value_id = 51 -- Только для значения опции 51;
6. Привязать все товары к мультимагазину
INSERT IGNORE INTO `oc_product_to_store` (product_id, store_id) SELECT p.product_id, xx AS store_id FROM `oc_product` p;
7. Отключить доставку для всех товаров
UPDATE oc_product SET shipping = 0;
8. Заполнить поле "Модель" (код товара) на основе ID
UPDATE oc_product SET model = LPAD(product_id,6,'000000');
9. Заполнить поле SKU (артикул) на основе ID
UPDATE oc_product SET sku = LPAD(product_id,6,'000000');
10. Массовое изменение цен
Разделить все цены на 75.99:
UPDATE `oc_product` SET `price` = `price` / 75.99;
Изменить цену только у товаров, где цена больше 1:
UPDATE `oc_product` SET `price` = `price` / 65.99 WHERE `price` > 1;
Увеличить цену на 7%:
UPDATE `oc_product` SET `price` = `price` + (`price`/100*7) WHERE `price` > 1;
Уменьшить цену товаров определенного производителя на 8%:
UPDATE `oc_product` SET `price` = `price` - (`price`/100*8) WHERE `manufacturer_id` = 54;
11. Отключить товары с ценой = 0
UPDATE oc_product SET status = 0 WHERE price = 0;
12. Скопировать SEO URL для всех магазинов
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. Отключить товары без изображений
UPDATE `oc_product` SET `status` = 0 WHERE `image` = '' OR `image` IS NULL;
14. Удалить все товары с количеством 0
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) WHERE p1.quantity = 0;
15. Сделать все опции необязательными
UPDATE oc_product_option SET required = '0';
16. Отключить категории без товаров
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 p.status = 0;
17. Удалить определенные атрибуты из всех товаров
DELETE FROM oc_product_attribute WHERE attribute_id IN (1, 2, 3, 4, 5, 6);
18. Отключить индексацию товаров определенной категории
UPDATE `oc_product` SET `noindex` = 1 WHERE product_id IN (SELECT product_id FROM `oc_product_to_category` WHERE category_id = 1);
19. Включить индексацию у всех категорий
UPDATE `oc_category` SET `noindex` = 0;
20. Увеличить максимальную длину мета-описания
ALTER TABLE oc_product_description MODIFY meta_description VARCHAR(1000); ALTER TABLE oc_information_description MODIFY meta_description VARCHAR(1000);
21. Присвоить всем товарам НДС
UPDATE `oc_product` SET `tax_class_id` = 10;
22. Массово изменить цены опций
Уменьшить цену всех опций на 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);
23. Массово добавить процент к ценам акций
UPDATE oc_product_special SET price = price * 1.07;
24. Скопировать значения атрибута в поле location
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. Добавить товар во все родительские категории
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 c2 ON cp.path_id = c2.category_id WHERE ptc.category_id <> c2.category_id;