Как установить поле в наборе результатов этого оператора SELECT? - PullRequest
0 голосов
/ 26 мая 2020

Итак, у меня есть запрос SQL, который я выполняю в базе данных Magento 2. Он успешно перечисляет все элементы, у которых «статус» - «отключен» (2), и их количество на складе больше 0.

select
  `eav_attribute`.`attribute_id` AS `attribute_id`,
  `catalog_product_entity_int`.`entity_id` AS `entity_id`,
  `catalog_product_entity_int`.`value` AS `value`,
  `eav_attribute`.`attribute_code` AS `attribute_code`,
  `catalog_product_entity`.`sku` AS `sku`,
  `catalog_product_entity`.`type_id` AS `type_id`,
  `cataloginventory_stock_item`.`qty` AS `qty`

from
  (((`eav_attribute`
  join `catalog_product_entity_int` on ((`eav_attribute`.`attribute_id` = `catalog_product_entity_int`.`attribute_id`)))
  join `catalog_product_entity` on ((`catalog_product_entity_int`.`entity_id` = `catalog_product_entity`.`entity_id`)))
  join `cataloginventory_stock_item` on ((`catalog_product_entity_int`.`entity_id` = `cataloginventory_stock_item`.`product_id`)))


where
  ((`eav_attribute`.`attribute_code` = 'status') and
  (`catalog_product_entity_int`.`value` = 2)) and
  (`cataloginventory_stock_item`.`qty` > 0 )

Он работает для выбора набора результатов и предоставляет мне точный список элементов, соответствующих этим 2 критериям. Как бы мне изменить это, чтобы установить «статус» элементов в этом результате на «Включено» (1). По сути, мне просто нужно, чтобы эти критерии выполнялись, а затем для каждого из результатов установите столбец catalog_product_entity_int. value на 1 вместо 2.

1 Ответ

0 голосов
/ 26 мая 2020

Вы можете использовать update:

update eav_attribute ea join
       catalog_product_entity_int cpei
       on ea.attribute_id = cpei.attribute_id join
       catalog_product_entity cpe
       on cpei.entity_id = cpe.entity_id join
       cataloginventory_stock_item cisi
       on cpei.entity_id = cisi.product_id
    set cpei.value = 2
    where ea.attribute_code = 'status' and
          cpei.value = 2 and
          ci.qty > 0 ;

Обратите внимание, что я добавил псевдонимы таблиц и удалил круглые скобки и обратные кавычки, чтобы запрос было легче писать и читать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...