Jump to content
dima2000

Удалить неиспользуемые атрибуты и неиспользованные значения.

Recommended Posts

Posted (edited)

Знающие люди, направьте на решение проблемы. После нескольких лет работы магазина и нескольких смен продаваемого ассортимента товаров накопилось огромное количество ненужных атрибутов и значений атрибутов. Ищу решение каким образом можно их удалить пакетно. Может быть каким-то запросом в базе или есть модуль. Самостоятельно решения не нашел. Ручное удаление не вариант, в базе около полутора миллиона значений атрибутов.

 

Версия опенкарта ocStore 1.5.5.1.2

Edited by dima2000

Share this post


Link to post
Share on other sites
15 минут назад, dima2000 сказал:

можно их удалить пакетно

у меня стоит этот модуль, им делаю все пакетные задачи

 

Share this post


Link to post
Share on other sites

У меня он тоже есть, но как им удалить неиспользуемые ЗНАЧЕНИЯ аттрибутов ?

Share this post


Link to post
Share on other sites

А что значит "неиспользуемые" значения? Они в невесомости? Где их товары?

Share this post


Link to post
Share on other sites

Товары удалены, поэтому в "невесомости"

Share this post


Link to post
Share on other sites

Каким образом удалялись товары? Стандартный родной метод должен чистить все связи с товарами.

Share this post


Link to post
Share on other sites

Batch Editor

Share this post


Link to post
Share on other sites
$query = $this->db->query("SELECT DISTINCT pa.product_id FROM " . DB_PREFIX . "product_attribute pa LEFT JOIN " . DB_PREFIX . "product p ON (pa.product_id = p.product_id) WHERE p.product_id IS NULL");

foreach ($query->rows as $result) {
  $this->db->query("DELETE FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$result['product_id'] . "'");
}

Отрабатывать может долго.

Все работы на свой страх и риск, скрипт не проверялся.

Share this post


Link to post
Share on other sites
3 часа назад, dima2000 сказал:

Знающие люди, направьте на решение проблемы. После нескольких лет работы магазина и нескольких смен продаваемого ассортимента товаров накопилось огромное количество ненужных атрибутов и значений атрибутов. Ищу решение каким образом можно их удалить пакетно. Может быть каким-то запросом в базе или есть модуль. Самостоятельно решения не нашел. Ручное удаление не вариант, в базе около полутора миллиона значений атрибутов.

 

Версия опенкарта ocStore 1.5.5.1.2

 

Share this post


Link to post
Share on other sites
3 минуты назад, whiteblue сказал:

 

 

Это к чему пост вообще ?

Share this post


Link to post
Share on other sites

DELETE FROM oc_product_attribute
WHERE product_id NOT IN
(SELECT product_id FROM oc_product);

 

Не забыайте делать бекап!

Share this post


Link to post
Share on other sites
3 часа назад, SooR сказал:

$query = $this->db->query("SELECT DISTINCT pa.product_id FROM " . DB_PREFIX . "product_attribute pa LEFT JOIN " . DB_PREFIX . "product p ON (pa.product_id = p.product_id) WHERE p.product_id IS NULL");

foreach ($query->rows as $result) {
  $this->db->query("DELETE FROM " . DB_PREFIX . "product_attribute WHERE product_id = '" . (int)$result['product_id'] . "'");
}

Отрабатывать может долго.

Все работы на свой страх и риск, скрипт не проверялся.

 

ругается на ошибку синтаксиса, я так понял нужно подставить свой префикс базы (oc_) только не понял куда.

Share this post


Link to post
Share on other sites

А какая ошибка?

Этот скрипт нужно выполнить в контексте opencart, в любом контроллере админки.

 

Share this post


Link to post
Share on other sites
3 минуты назад, SooR сказал:

А какая ошибка?

Этот скрипт нужно выполнить в контексте opencart, в любом контроллере админки.

 

 

я думал нужно делать запросом SQL в PHPMyAdmin.  Там такая ошибка :

Спойлер

Ошибка

Вероятно, SQL-запрос содержит ошибку. При наличии таковой, ниже будет выведена ошибка MySQL-сервера, облегчающая диагностику проблемы.


ERROR: Неизвестная пунктуация @ 15
STR: ->
SQL: $query = $this->db->query("SELECT DISTINCT pa.product_id FROM " . DB_PREFIX . "product_attribute pa LEFT JOIN " . DB_PREFIX . "product p ON (pa.product_id = p.product_id) WHERE p.product_id IS NULL");$query = $this->db->query("SELECT DISTINCT pa.product_id FROM " . DB_PREFIX . "product_attribute pa LEFT JOIN " . DB_PREFIX . "product p ON (pa.product_id = p.product_id) WHERE p.product_id IS NULL");$query = $this->db->query("SELECT DISTINCT pa.product_id FROM " . DB_PREFIX . "product_attribute pa LEFT JOIN " . DB_PREFIX . "product p ON (pa.product_id = p.product_id) WHERE p.product_id IS NULL");$query = $this->db->query("SELECT DISTINCT pa.product_id FROM " . DB_PREFIX . "product_attribute pa LEFT JOIN " . DB_PREFIX . "product p ON (pa.product_id = p.product_id) WHERE p.product_id IS NULL");

 

SQL-запрос: Документация

$query = $this->db->query("SELECT DISTINCT pa.product_id FROM " . DB_PREFIX . "product_attribute pa LEFT JOIN " . DB_PREFIX . "product p ON (pa.product_id = p.product_id) WHERE p.product_id IS NULL");

Ответ MySQL: Документация

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$query = $this->db->query("SELECT DISTINCT pa.product_id FROM " . DB_PREFIX . "p' at line 1 

 

Share this post


Link to post
Share on other sites

Нет, так не сделаете.

Если бы записей было меньше, можно было бы вот так прямо в phpmyadmin

 

DELETE pa FROM oc_product_attribute pa LEFT JOIN oc_product p ON (pa.product_id = p.product_id) WHERE p.product_id IS NULL

А если вы говорите 1,5 млн, попробуйте..

Share this post


Link to post
Share on other sites
Posted (edited)
11 минут назад, SooR сказал:

Нет, так не сделаете.

Если бы записей было меньше, можно было бы вот так прямо в phpmyadmin

 


DELETE pa FROM oc_product_attribute pa LEFT JOIN oc_product p ON (pa.product_id = p.product_id) WHERE p.product_id IS NULL

А если вы говорите 1,5 млн, попробуйте..

Удалено 0 строк. ( запрос занял 3.1404 сек. )

 

Мы же говорим сейчас про значения атрибутов? А не сами атрибуты....

И как еще пустые группы атрибутов таким же способом удалить ?

Edited by dima2000

Share this post


Link to post
Share on other sites

А такое что выдаст?

 

SELECT COUNT(DISTINCT pa.product_id) AS total FROM oc_product_attribute pa LEFT JOIN oc_product p ON (pa.product_id = p.product_id) WHERE p.product_id IS NULL

 

Share this post


Link to post
Share on other sites
6 минут назад, SooR сказал:

А такое что выдаст?

 


SELECT COUNT(DISTINCT pa.product_id) AS total FROM oc_product_attribute pa LEFT JOIN oc_product p ON (pa.product_id = p.product_id) WHERE p.product_id IS NULL

 

#1054 - Unknown column 'pa.product_id' in 'field list'

Share this post


Link to post
Share on other sites

Что-то не то у вас, или базу не выбрали..

Share this post


Link to post
Share on other sites
5 минут назад, SooR сказал:

Что-то не то у вас, или базу не выбрали..

 

перепроверил, видимо не все скопировал сразу из вашего поста. 

https://yadi.sk/i/gENdLiS2SF2-MQ  запрос отработал :

SQL-запрос был успешно выполнен и все что написал...

Share this post


Link to post
Share on other sites

Ну а результат то какой? Не стесняйтесь скринить все окно

Share this post


Link to post
Share on other sites
12 минут назад, SooR сказал:

Ну а результат то какой? Не стесняйтесь скринить все окно

 

так я результат и заскринил

 

https://yadi.sk/i/EvDSwuoi7jjnxA

 

вот пошире окно

Share this post


Link to post
Share on other sites

По результату пишет, что лишних атрибутов нет, точнее, значений атрибутов.

Share this post


Link to post
Share on other sites
46 минут назад, SooR сказал:

По результату пишет, что лишних атрибутов нет, точнее, значений атрибутов.

 

 как сделать тоже самое с пустыми категориями атрибутов ?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Similar Content

    • By mazein
      Скачать/Купить дополнение


      Подсказка для атрибутов, групп атрибутов, опций и их значений - ocmod_2.x
      Всплывающая подсказка для атрибутов, групп атрибутов, опций и их значений
      Модуль выполнен для стандартного шаблона. Ввиду того, что я не могу учесть всех нюансов кастомных шаблонов, работу модуля на них я не гарантирую.
       
      Модуль распространяется как есть. Все доработки, и адаптация - платно.
       
      Функционал:
      всплывающее описание (подсказка) для группы атрибутов всплывающее описание (подсказка) для атрибутов всплывающее описание (подсказка) для значений атрибутов всплывающее описание (подсказка) для опций всплывающее описание (подсказка) для значений опций возможность задать подсказку значению опции как на странице опций, так и на странице редактирования товара, причём на сайте выводиться будет подсказка со страницы редактирования товара. Возможность задать подсказки разным значениям атрибутов через запятую.  
      Описание выводится в карточке товара (вкладка характеристики), и на странице сравнения товаров.
      Установка стандартная для ocmod:
      Панель управления - Установка дополнений
       
      Демо Добавил mazein Добавлено 03.02.2016 Категория Опции Системные требования Сайт разработчика Старая цена Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.1 ocStore 2.3
      2.1 OpenCart.Pro, ocShop Обращение к серверу разработчика  
    • By mazein
      Всплывающая подсказка для атрибутов, групп атрибутов, опций и их значений
      Модуль выполнен для стандартного шаблона. Ввиду того, что я не могу учесть всех нюансов кастомных шаблонов, работу модуля на них я не гарантирую.
       
      Модуль распространяется как есть. Все доработки, и адаптация - платно.
       
      Функционал:
      всплывающее описание (подсказка) для группы атрибутов всплывающее описание (подсказка) для атрибутов всплывающее описание (подсказка) для значений атрибутов всплывающее описание (подсказка) для опций всплывающее описание (подсказка) для значений опций возможность задать подсказку значению опции как на странице опций, так и на странице редактирования товара, причём на сайте выводиться будет подсказка со страницы редактирования товара. Возможность задать подсказки разным значениям атрибутов через запятую.  
      Описание выводится в карточке товара (вкладка характеристики), и на странице сравнения товаров.
      Установка стандартная для ocmod:
      Панель управления - Установка дополнений
       
      Демо
    • By evolka
      Поместить выпадающий список с опцией на плашку товара.
      При смене опции должно меняться отображение цены товара.
      По умолчанию должна стоять минимальная цена и минимальная опция.
      В выпадающем списке указывается только опция ( на данный момент указывается цифра добавляющаяся к цене)
      Функция должна работать как на мобильной версии так и в браузере компьютера.
      Купленные товары должны вычитаться со склада.
       
      Поместить атрибут на плашку товара.
       
      Если в товаре нет опции вывести атрибут на плашку.
       
      На странице товара есть рекомендованные товары, у них так же добавить опцию и атрибут.
    • By sv2109
      Больше 10 тысяч загрузок модулей от sv2109!
      Это вторая версия модуля, который имеет уже больше 200 покупок!
      Что делает этот модуль?
      Модуль значительно облегчает добавление атрибутов при добавлении товара
      Когда вы добавляете новый товар то во вкладке атрибутов вам придется вручную добавлять каждый атрибут. А если товаров несколько тысяч и у каждого по 15-20 атрибутов?.. Что делает модуль? Он позволяет привязать атрибуты к категории товаров. Например можно указать что для товара "Ноутбук" подходят атрибуты "процессор", "ОЗУ", "HDD" итд Теперь когда вы добавляете новый товар-ноутбук во вкладке атрибуты автоматически добавятся присвоенные для ноутбука атрибуты: "процессор", "ОЗУ", "HDD". У вас также остается возможность добавить атрибуты и вручную.
      Модуль значительно сэкономить время и количество ошибок при добавлении атрибутов.
      Демонстрация работы
      вместе с модулем Attribute Select - Атрибуты списком
      Совместимость:
      OpenCart, ocStore 2.0.x, 2.1.x, 2.2, 2.3, 3.x
      Версию для Opencart, ocStore 1.5.x можно скачать тут
       
      Модуль использует IonCube, обычно на 99% хостингов он установлен но на всякий случай можете проверить.
      Одна лицензия модуля позволяет установить этот модуль на 1 домене.
       
      Демо:
      Категория
      Товар
       
      Для связи с автором модуля пишите на sv2109@gmail.com или в ЛС
      © Стасюк Владимир (sv2109.com), 2016
    • By sv2109
      350.00 руб
      Скачать/Купить дополнение


      Attribute Category - Атрибуты категории
      Больше 10 тысяч загрузок модулей от sv2109!
      Это вторая версия модуля, который имеет уже больше 200 покупок!
      Что делает этот модуль?
      Модуль значительно облегчает добавление атрибутов при добавлении товара
      Когда вы добавляете новый товар то во вкладке атрибутов вам придется вручную добавлять каждый атрибут. А если товаров несколько тысяч и у каждого по 15-20 атрибутов?.. Что делает модуль? Он позволяет привязать атрибуты к категории товаров. Например можно указать что для товара "Ноутбук" подходят атрибуты "процессор", "ОЗУ", "HDD" итд Теперь когда вы добавляете новый товар-ноутбук во вкладке атрибуты автоматически добавятся присвоенные для ноутбука атрибуты: "процессор", "ОЗУ", "HDD". У вас также остается возможность добавить атрибуты и вручную.
      Модуль значительно сэкономить время и количество ошибок при добавлении атрибутов.
      Демонстрация работы
      вместе с модулем Attribute Select - Атрибуты списком
      Совместимость:
      OpenCart, ocStore 2.0.x, 2.1.x, 2.2, 2.3, 3.x
      Версию для Opencart, ocStore 1.5.x можно скачать тут
       
      Модуль использует IonCube, обычно на 99% хостингов он установлен но на всякий случай можете проверить.
      Одна лицензия модуля позволяет установить этот модуль на 1 домене.
       
      Демо:
      Категория
      Товар
       
      Для связи с автором модуля пишите на sv2109@gmail.com или в ЛС
      © Стасюк Владимир (sv2109.com), 2016
      Добавил sv2109 Добавлено 21.01.2016 Категория Атрибуты Системные требования Сайт разработчика sv2109.com Старая цена Метод активации По запросу в ЛС Ioncube Loader Требуется OpenCart 3.0
      2.3
      2.2
      2.1
      2.0 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х  
  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.