Перейти к содержанию
MKondratev

[Решено] Обновление цены товара (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)

Поделиться сообщением


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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Вы комментируете как гость. Если у вас есть аккаунт, пожалуйста, войдите
Ответить в этой теме...

×   Вы вставили контент с форматированием.   Удалить форматирование

  Разрешено использовать не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Похожий контент

    • От Tinyled
      Добрый день, столкнулся с задачей, выборки данных из таблицы в бд
      сама задача состоит в том что бы получить из таблицы записи сгруппированные по телефону (phone), но перед этим отсортированные по дате (datetime DESC), при этом с лимитом в 200 записей (LIMIT 0,200)
      прошу помочь понять, как можно сформировать запрос к бд, дабы не нагружать сильно бд, и выполнить все условия.
      Или может быть я ошибаюсь, и конечную сортировку лучше делать на php?
      пробовал запросом 
      SELECT sends.* FROM (SELECT * FROM `oc_watsappchat_send` WHERE creator="" ORDER BY `id` DESC) as sends GROUP BY sends.phone ORDER BY `id` DESC LIMIT 0,200 но запрос выходит достаточно долгим, и как я понимаю при увеличении числа записей в таблице время будет также увеличиваться
    • От YaroslavFrolov
      Доброго времени суток. Помогите плиз, нужно данные из корзины вставить в письмо заказа. Обработчик не от опенкарт.
    • От TerranXXX
      Необходимо модифицировать CMS ocStore v2.3 (русский OpenCart 2.1) для работы с MS SQL Server 2012+.

      Обязательные требования:
      1. Взаимодействие CMS с БД должно происходить исключительно через хранимые процедуры (доступа к таблицам у CMS не будет)
      2. Часть логики из php нужно перенести в хранимые процедуры (например динамическое формирование запросов)

      В ответе сообщите срок и стоимость данной работы.
    • От Bistore
      Добрый день помогите выбрать добить модуль личных количественных скидок на каждого пользователя отдельно в ограниченном виде!
      Получается
      1) Можно сравнить количество скидок на товар и количество купленных товаров пользователей(только авторизованные будут) сравнивая по айди товара и купленого товара минусовать количество скидок от купленного товара и выводить есть ли скидочный товар или же нет( или какое количество осталось).
       
      2) Я вывел sql  запросом уже в пользователе количество скидочных товаров минус количество купленного товара по айди ----- и теперь нужно по айди сравнить купленный товар и товар связать и по полю kolichestvo которое получилось в пользователе смотреть Kol=>0 ? или меньше и тд  
      Как лучше сделать?
      Как связать купленный товар(этим пользователем)  и товар на сайте?
      В файле который добавил в этот вопрос есть код корзины где осуществил все (jan - это количество скидок на товар) 
      cart.php
    • От AndreyRr
      Генерируется много обращений к MySQL - превышаем лимиты на хостинге, и хостер ругается.
       
      С чем может быть связано, и можете посоветует кто-то толькового программиста кто может решить? (сам магазин небольшой, 300 товаров)
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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