Задать вопрос
@lagudal

Как составить такой SQL запрос?

Ситуация следующая.
Есть много категорий продуктов, у которых в display settings один аттрибут - display_mode - установлен как "static block only", а другой аттрибут - is_anchor - установлен как "yes".
Проблема в том, что при использовании плагина shopby от amasty в head страницы категории на фронте добавляются аттрибуты link rel="next" , lin rel="prev" - но при этом link rel="next" отображается на фронте и на страницах именно таких категорий (display_mode - static block only, is_anchor - "yes"), если у таких категорий есть дочерние, с отображением продуктов.

Дело еще в том, что таких категорий сотни, и вручную для каждой категории изменять аттрибут муторно. Хотелось бы, если это возможно, изменить все одним sql запросом, но я не могу догнать, как.

К примеру, вот тут есть пример, как изменить anchor для всех категорий. (правда, attribute_id=51 для is_anchor).

SELECT * FROM eav_attribute where attribute_code = 'is_anchor';
UPDATE catalog_category_entity_int set value = 0 where attribute_id = 51;


attribute_id у display_mode - 49, и этот аттрибут сохраняется не в catalog_category_entity_int, а в catalog_category_entity_varchar. Значение(value), соотвествующее static block only - PAGE.

Т.е. я хочу составить запрос(запросы): получить все категории (entity_id), у которых attribute_id="49" имеет значение - value="PAGE" в таблице catalog_category_entity_varchar , и для этих entity_id в таблице catalog_category_entity_int установить значение - value="0" для аттрибута с attribute_id = '51'

Сложный для меня запрос, прошу помощи.
  • Вопрос задан
  • 101 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
UPDATE catalog_category_entity_int AS c 
  SET c.value = 0
  WHERE c.attribute_id = 51
    AND EXISTS(
      SELECT *
      FROM catalog_category_entity_varchar AS e
      WHERE e.entity_id = c.entity_id
        AND e.attribute_id = 49
        AND e.value = 'PAGE'
    )

Естественно, перед выполнением любых запросов на массовое изменение/удаление, не забудьте сделать бэкап базы.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы