в другом разделе никто не отвечает, спрошу здесь. В магазине много товаров, характеристик и групп характеристик. В некоторых группах есть незадействованные характеристики. Какие-то остались от удаленных товаров, какие-то ошибочно попали не в свою группу. Может кто-нибудь сделать скрипт, который корректно удалит из базы характеристики, не привязанные ни к одному товару, с возможностью выбора группы, по которой вести проверку и удаление?
На вскидку самый простой вариант: Экспортировать все товары (и их характеристики) в файл, удалить характеристики, импортировать товары обратно. Должно сработать (лучше на тестовом попробовать сначала), но только если у вас не понастроено фильтров на характеристиках.
Другой вариант.
Следующим запросом выбираем все характеристики, которые хотя бы раз присвоену хотя бы одному товару:
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 скрипт - то дальше лучше ручками через админку по этим айдишникам удалять характеристики
!!! не тестировал второй запрос, но по логике все должно быть верно, однако лучше сначала на тестовой копии опробовать