В MySQL, как мне обновить пакет полей, чтобы объединить их значения с теми, которые соответствуют entity_id в той же таблице?

0

Надеюсь, я объясню это достаточно ясно: в нашей базе Magento у меня есть следующие два запроса, которые мне нужно комбинировать (я новичок SQL):

update catalog_product_entity_text 
set 'value' = CONCAT('', 'value')
where entity_id in (select product_id from catalog_category_product where category_id = 975)
and attribute_id = 57;

select 'value' from catalog_product_entity_text 
where entity_id in (select product_id from catalog_category_product where category_id = 571) 
and attribute_id = 551;

Пустое значение в функции CONCAT в первом запросе должно содержать значение из второго запроса, которое соответствует текущему объекту entity_id в цикле.

Как я могу это сделать? Большое спасибо.

ОБНОВЛЕНИЕ: я читаю о соединениях, и похоже, что левое внешнее соединение в одной таблице будет таким, хотя я все еще не совсем понятен относительно правильного синтаксиса и использования.

Здесь черновик, который даже не проходим:

select 'value' from catalog_product_entity_text
    as mobile_description
where attribute_id = 551
    and entity_id in (select product_id
        from catalog_category_product
        where category_id = 571)
join on entity_id;

Как я могу улучшить это, чтобы сделать его эффективным?

Я пытаюсь присоединиться к строкам с атрибутом_id = 57 & attribute_id = 551, получая столбец value от каждого, для тех, у кого есть тот же объект entity_id, чтобы я мог обновить value строки с атрибутом_id = 57, чтобы включить значение соответствующая запись с атрибутом_id = 551.

Теги:
magento

1 ответ

0

Я бы сказал, что что-то подобное должно работать. Конечно, первая резервная база данных. Это чистый вопрос SQL.

update catalog_product_entity_text 
set 'value' = CONCAT((select 'value' from catalog_product_entity_text 
where entity_id in (select product_id from catalog_category_product where category_id = 571) and attribute_id = 551), 'value')
where entity_id in (select product_id from catalog_category_product where category_id = 975)
and attribute_id = 57;

Если это не помогает, дайте мне знать, но вы можете быстро взглянуть на этот ответ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню