Страница 1 из 1
SQL запрос для категорий товаров
Добавлено: 30.08.2021, 10:38
Евгений
V 2.3.5
Добрый день, форумчане!
Подскажите как с помощью SQL запроса удалить принадлежность товаров к материнаским категориям в карточках товара, оставив лишь подкатегории нижнего уровня. Например товар находится в категории Электроника -> Компьютеры и ноутбуки -> Ноутбуки и соответственно в карточке товара в разделе категория выбраны все категории вложенности. Необходимо, чтобы после запроса товар относился лишь к категории Ноутбуки
Добавлено: 30.08.2021, 19:38
makki
Код: Выделить всё
UPDATE ok_products_categories pc
LEFT JOIN ok_categories c ON pc.category_id = c.id
SET c.parent_id = 0
Перед выполнением запроса на всякий случай сделайте бэкап базы данных
Добавлено: 31.08.2021, 05:07
korshunov
makki писал(а):Код: Выделить всё
UPDATE ok_products_categories pc
LEFT JOIN ok_categories c ON pc.category_id = c.id
SET c.parent_id = 0
Весьма странный способ. Реально просто уничтожит структуру дерева категорий, переведя каждую категорию (в которой есть товары) в верхний уровень.
А вообще желание ТС выглядит весьма туманно и противоречиво...
Добавлено: 31.08.2021, 05:54
makki
korshunov писал(а):Реально просто уничтожит структуру дерева категорий, переведя каждую категорию (в которой есть товары) в верхний уровень.
А разве не в этом была задача?
Добавлено: 31.08.2021, 06:43
korshunov
В том и дело, что с задачей ТС намудрил.
С одной стороны, "удалить принадлежность товаров к материнаским категориям".
С другой, "Необходимо, чтобы после запроса товар относился лишь к категории Ноутбуки".
А запрос Ваш вообще НЕ ЗАТРАГИВАЕТ принадлежность товаров к категориям, а только меняет структуру дерева категорий...
Добавлено: 16.09.2021, 08:15
ооо
Думаю там вопрос даже не к базе, а к хлебным крошкам. Т.к. человек добавил товар в категорию Ноутбуки (третьего уровня), а в хлебный крошках она выводится как Электроника -> Компьютеры и ноутбуки -> Ноутбуки. + этот товар выводится в категориях Электроника и Электроника -> Компьютеры и ноутбуки , чего возможно не нужно. В любом случае прошу уточнить более детально что именно нужно
Добавлено: 14.10.2021, 15:11
Евгений
Попробую уточнить.
Изначально на сайте при добавлении нового товара в админке указывалась не одна категория (последней вложенности, например
Водонагреватели), а все что входят в структуру дерева (
Техника для дома -> Водонагреватели)
Пример из админки демо версии сайта:
Сейчас необходимо, чтобы в карточке товара было отмечено лишь
ВодонагревателиПри импорте данных с помощью CSV файла изменения в категориях не происходят.
На сайте используется шаблонное описание товаров с помощью
SEO товаров, но если в карточке товара указаны несколько категорий вложенности, то описание подтягивается от материнской категории. Если же товары будут относиться к категориям последней вложенности, то появляется возможность более гибко настроить описания.
Добавлено: 14.10.2021, 16:32
korshunov
Примерно так:
DELETE FROM ok_products_categories pc WHERE category_id IN ( select dictinct parent_id from ok_categories)
И после этого надо как-то корректировать поле main_category_id. И возможны ошибки в данных, когда у товара вообще не будет задано категории...
Надежнее сразу писать обработку на PHP со всеми проверками.