Полезные SQL запросы в OPENCART
В этой статье мы рассмотрим полезные SQL запросы, который могут нам помочь в рутинной работе: изменение текста, добавление к тексту, изменение цен. Пример рассмотрим на популярном движке для интернет-магазина Opencart. Структуру таблиц базы будет использовать от 2й версии Опенката. Перейдем сразу к конкретике.
SQL запрос к базе можно сделать 2-мя основными способами:
- Через phpMyAdmin или другое подобное приложение для работы с MySQL. Обычно в phpMyAdmin можно зайти через панель управления хостингом. Нужно выбрать нужную Вам базу и зайти во вкладку SQL b вставить приведенный ниже запросы, заранее подправив под свои нужды.
- Через систему восстановления Opencart. Для этого перейдите Система — Инструменты — Бэкап / Восстановление. Далее выберите заранее подготовленный файл с SQL запросом (создайте в текстовом редакторе файл с расширением sql и в него добавьте код) нажмите кнопку (вверху справа) восстановить.

Теперь к самим примерам. Я привожу те случаи, с которыми я сталкивался, с моими цифрами, названиями таблиц и префиксами. Вы же должны подправить под свои данные!
Рекомендуем VPS и хостинг для интернет-магазина с функцией «Все включено» (бекап, администрирование, панель управления, DNS). Активация в течении 1 мин — https://adminvps.ru/host/hosting_internet_magazin.php
1. Массовое изменение цены в Opencart
UPDATE `oc_product` SET `price` = `price` / 65.99;
Этот пример разделит все цены на 65.99, так мы можем перевести цены в рублях на доллары.
P.S позже опишу, как сделать цены в админке в валюте, а для пользователей в рублях.
Немного усложним, добавим условие
UPDATE `oc_product` SET `price` = `price` / 65.99 WHERE `oc_product`.`price` > 1;
Так мы сделаем те же действий, но для тех товаров, у которых цена больше 1
Аналогично, Вы можете добавить свои условия, по другим полям.
Допустим, Вам нужно увеличить цену на 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;
Сам manufacturer_id можете узнать в админке, зайдя в производители и наведя курсор на «Изменить». Там в ссылке Вы его и увидите. Или же посмотрите в базе oc_manufacturer.
2. Массовое изменение мета тегов в Opencart
Рассмотрим на таком примере, Вы собрали базу, импортировали, но в ней есть наименование Вашего поставщика. И нужно заменить его на Ваше название.
Изменяем метатег title
UPDATE `oc_product_description` SET `seo_title` = REPLACE(`seo_title`, 'Фирма поставщика', 'Ваша фирма');
Изменяем метатег description
UPDATE `oc_product_description` SET `meta_description` = REPLACE(`meta_description`, 'Фирма поставщика', 'Ваша фирма');
Изменяем метатег description
UPDATE `oc_product_description` SET `seo_h1` = REPLACE(`seo_h1`, 'Фирма поставщика', 'Ваша фирма');
Также можно добавить приставку Вашей фирмы в конце мет тегов, например тайтла. Для остальных по аналогии с вышеприведенными примерами.
UPDATE `oc_product_description` SET `seo_title` = CONCAT(`seo_title`, 'Ваша фирма');
Это основные примеры, которыми я пользуюсь. Они хорошо тем, что можно не использовать сторонние модули и тем более их покупать, если Вам это нужно проделывать не так часто. Или Вы часто создаете интернет магазины.
P.S Вы также можете использовать сразу несколько команд, каждая с новой строки и обязательно в конце каждой команты точка с запятой.
P.P.S Эти примеры касаются не только Opencart, Вы их можете использовать и на других сайтах, например, на Joomla, WordPress …
Здравствуйте, подскажите, как сделать запрос SQL по опциям? Нужно опцию, применить ко всем товарам.
Однозначн оне скажу. Но это не так просто. Вам нужно сначала создать у одного товара нужные опции. Затем посмотреть в базе, как это все прописалось и затем сделать так для каждого product_id
Опции в нескольких таблицах oc_product_option, oc_product_option_value
Проще использовать какойто из модулей импорта/экспорта и добавить всем товарам опции.
Спасибо вам за полезные sql-запросы!!!
Подскажите, как составить sql запрос для вот такой штуки?:
Если у созданного товара отсутствует meta_title, то берём содержимое из name этого же товара и вставляем в meta_title.
Попробуйте так:
UPDATE `oc_product_description` SET `seo_title` = `name` WHERE `seo_title` IS NULL OR `seo_title` = '';