Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

[Решено] Обновление цены товара (mysql запрос)


 Поделиться

Рекомендованные сообщения

Здравствуйте, подскажите как соединить корректно два запроса.

 

Задача: обновить цены товаров.

 

Для того чтобы понять у какого товара изменилась цена я выполняю следующий запрос:

mysql> select es_product.product_id old_id, es_product.price old_price, es_product_sync.product_id new_id, es_product_sync.price new_price 
from elsumki_database.es_product join elsumki_database.es_product_sync 
on es_product.product_id = es_product_sync.product_id 
where es_product.price != es_product_sync.price or es_product_sync.price IS NULL;
+----------+-----------+----------+-----------+
| old_id   | old_price | new_id   | new_price |
+----------+-----------+----------+-----------+
| 10060066 |  777.0000 | 10060066 |  450.0000 |
| 10060084 |  777.0000 | 10060084 |  850.0000 |
| 10060141 |  777.0000 | 10060141 | 3000.0000 |
+----------+-----------+----------+-----------+
3 rows in set (0.00 sec)

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

mysql> select es_product.product_id old_id, es_product.price old_price, es_product_sync.product_id new_id, es_product_sync.price new_price,
case
when old_id = new_id and old_price != new_price
then ($какой то запрос на перемещение цен)
when es_product.product_id = es_product_sync.product_id and es_product.price = es_product_sync.price
then end;
end case 
from elsumki_database.es_product join elsumki_database.es_product_sync 
on es_product.product_id = es_product_sync.product_id 
where es_product.price != es_product_sync.price or es_product_sync.price IS NULL;

 

Ссылка на комментарий
Поделиться на других сайтах


Зачем перебирать? Меняйте всем товарам. И никаких проблем. Если цена не изменилась, то товар получит новую такую же.

Ссылка на комментарий
Поделиться на других сайтах

Зачем перебирать? Меняйте всем товарам. И никаких проблем. Если цена не изменилась, то товар получит новую такую же.

 

Банальной заменой? 

replace into elsumki_database.es_product select * from elsumki_database.es_product_sync;
replace into elsumki_database.es_product_description select * from elsumki_database.es_product_description_sync;
replace into elsumki_database.es_product_to_category select * from elsumki_database.es_product_to_category_sync;
replace into elsumki_database.es_product_to_layout select * from elsumki_database.es_product_to_layout_sync;
replace into elsumki_database.es_product_to_store select * from elsumki_database.es_product_to_store_sync;
Изменено пользователем MKondratev
Ссылка на комментарий
Поделиться на других сайтах


update es_product as t1 set t1.price = (select price from es_product_sync as t2 where t2.product_id = t1.product_id)
Ссылка на комментарий
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.