2013-09-23 2 views
0

Текущая таблица:SQL UPDATE на основе значений других строк

id_product  id_shop  id_lang  description 
--------------------------------------------------------- 
1    1    est   black 
2    1    eng   brown 
3    1    rus   red 
1    2    est 
2    2    eng 
3    2    rus 

Ожидаемый результат:

id_product  id_shop  id_lang  description 
--------------------------------------------------------- 
1    1    est   black 
2    1    eng   brown 
3    1    rus   red 
1    2    est   black 
2    2    eng   brown 
3    2    rus   red 

Мне нужно скопировать недостающее «описание» от id_lang 1 до id_lang 2 для соответствующих продуктов и языки.

У меня есть aquery, но этот раз из и ошибок результаты:

UPDATE `ps_product_lang` t1, `ps_product_lang` t2 
SET t1.description = t2.description 
WHERE t1.id_shop = 2 
AND t2.id_shop = 1 

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

ответ

0

Это должно работать:

UPDATE `ps_product_lang` t1 join `ps_product_lang` t2 on 
t1.id_lang = t2.id_lang 
SET t1.description = t2.description 
WHERE t1.id_shop = 2 
AND t2.id_shop = 1 
+0

Спасибо! Сначала это повлияло на 0 строк, но мне удалось исправить его (удалено и t1.id_shop = t2.id_shop): UPDATE 'ps_product_lang' t1 присоединиться к' ps_product_lang' t2 по t1.id_product = t2.id_product и t1.id_lang = t2 .id_lang SET t1.description = t2.description WHERE t1.id_shop = 2 И t2.id_shop = 1 – popkutt

0

Я думаю, что вы можете использовать id_lang столбец сливаться описание, как следовать

UPDATE `ps_product_lang` t1 
INNER JOIN `ps_product_lang` t2 
ON t1.`id_lang` = t2.`id_lang` 
SET t1.`description` = t2.`description` 
WHERE t1.`description` IS NULL 

Вы, возможно, потребуется изменить IS NULL в = '' если столбец содержит пустые значения

Смежные вопросы