В этой статье мы рассмотрим полезные 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` = '';