Удаление неиспользуемых характеристик

Всем привет,

в другом разделе никто не отвечает, спрошу здесь. В магазине много товаров, характеристик и групп характеристик. В некоторых группах есть незадействованные характеристики. Какие-то остались от удаленных товаров, какие-то ошибочно попали не в свою группу. Может кто-нибудь сделать скрипт, который корректно удалит из базы характеристики, не привязанные ни к одному товару, с возможностью выбора группы, по которой вести проверку и удаление?

На вскидку самый простой вариант: Экспортировать все товары (и их характеристики) в файл, удалить характеристики, импортировать товары обратно. Должно сработать (лучше на тестовом попробовать сначала), но только если у вас не понастроено фильтров на характеристиках.

1 лайк

Другой вариант.
Следующим запросом выбираем все характеристики, которые хотя бы раз присвоену хотя бы одному товару:

SELECT DISTINCT(`feature_id`) AS `feature_id` FROM `cscart_product_features_values` ORDER BY `feature_id` DESC

получаем табличку, которую например в экселе перевести в формат знач1,знач2,знач3,…,значN - эть будет наша СТРОКА
Делаем второй запрос (вместо СТРОКА должно получится что-то типа после подстановки того что получилось ранее: NOT IN (25,28,34,37,45,48,69)):

SELECT `feature_id` FROM `cscart_product_features` WHERE `feature_id` NOT IN (СТРОКА) AND `feature_type` != 'G'

получаем список id характеристик, которые не назначены товарам, если не писать php скрипт - то дальше лучше ручками через админку по этим айдишникам удалять характеристики
!!! не тестировал второй запрос, но по логике все должно быть верно, однако лучше сначала на тестовой копии опробовать