Страница 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
Евгений
Попробую уточнить.
Изначально на сайте при добавлении нового товара в админке указывалась не одна категория (последней вложенности, например Водонагреватели), а все что входят в структуру дерева (Техника для дома -> Водонагреватели)
Пример из админки демо версии сайта:
1.jpg

Сейчас необходимо, чтобы в карточке товара было отмечено лишь Водонагреватели
При импорте данных с помощью 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 со всеми проверками.