Как массово перенести товары из одного раздела в другой посредством SQL?

[16 июля 2019 г.]    Российская сборка Magento 2.52.2
Magento 2: модули и услуги
magereport.com: составление перечня необходимых для установки заплаток SUPEE
#1 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

23.03.2015 17:43

  • Узнайте идентификаторы прежнего и нового товарных разделов.
    Идентификаторы — это числа, они отображатся рядом с названием товарного раздела после выбора товарного раздела в заголовке товарного раздела на административном экране товарного раздела.
    Прикрепленное изображение: Untitled-1.png
  • Откройте посредством phpMyAdmin базу данных интернет-магазина.
  • Сделайте на всякий случай резервную копию базы данных (в верхнем меню phpMyAdmin пункт «Export»)
  • Дважды выполните запрос SQL (в верхнем меню phpMyAdmin пункт «SQL») по следующему шаблону:
    UPDATE catalog_category_product 
        SET category_id = <идентификатор нового раздела> 
        WHERE 
                category_id = <идентификатор прежнего раздела> 
            AND 
                product_id NOT IN (
                    SELECT product_id FROM catalog_category_product WHERE category_id = <идентификатор нового раздела>
                )
    ;
    DELETE FROM catalog_category_product WHERE category_id = <идентификатор прежнего раздела>;
    
    UPDATE catalog_category_product_index 
        SET category_id = <идентификатор нового раздела> 
        WHERE 
                category_id = <идентификатор прежнего раздела> 
            AND 
                product_id NOT IN (
                    SELECT product_id FROM catalog_category_product_index WHERE category_id = <идентификатор нового раздела>
                )
    ;
    DELETE FROM catalog_category_product_index WHERE category_id = <идентификатор прежнего раздела>;

    Вместо <идентификатор нового раздела> и <идентификатор прежнего раздела> подставьте числа из пункта 1.
  • Перестройте все расчётные таблицы (в разделе «Система» → «Расчётные таблицы»)
  • Обновите весь кэш (в разделе «Система» → «Кэширование»)


Поделиться темой: