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

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

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