Обновить записи в таблице?

205
30 марта 2017, 20:01

Есть задача. Нужно вбить в поле процент, и на этот процент уменьшить увеличить поле price в выбранной категории, а значение которое было в поле price записать в old_price.

UPDATE tm_product 
SET price = price  + (price/100)*'$discount' 
WHERE id_category='$category' 
  AND id_subcategory='$subcategory'

вот так я обновляю запись в таблице, а как мне обновить поле old_price == старое значение price. Т.Е. сделать запрос до этого? Какой запрос?

Answer 1

как мне обновить поле old_price == старое значение price. Т.Е. сделать запрос до этого?

В секции SET запроса UPDATE можно выполнить несколько присвоений, изменяя значения одного и того же и/или разных полей, разделяя присвоения запятыми, при этом присвоения выполняются строго в порядке их следования.

Т.е. сначала надо сохранить старое значение, а потом посчитать и изменить текущее:

UPDATE tm_product 
SET old_price = price,
    price = price  + (price/100)*'$discount'
WHERE id_category='$category' 
  AND id_subcategory='$subcategory'ж
READ ALSO
ERROR 2006 (HY000): MySQL server has gone away

ERROR 2006 (HY000): MySQL server has gone away

При вводе любой команды через командную строку Windows возникает такая ошибка: ERROR 2006 (HY000): MySQL server has gone awayПроисходит реконнект и команда срабатывает...

209
MYSQL Вывод двух селектов в одну таблицу

MYSQL Вывод двух селектов в одну таблицу

Помогите, пожалуйста, не могу объединить два запроса в одинКаждый из них выводит строчку с нужными данными по итогу

282
TRANSACTION ISOLATION LEVEL в хранимой процедуре mysql

TRANSACTION ISOLATION LEVEL в хранимой процедуре mysql

Для MS SQL есть возможность установки TRANSACTION ISOLATION LEVEL в хранимых процедурахНапример:

225
Deadlock в MySQL: анализ engine.log

Deadlock в MySQL: анализ engine.log

Как понять причину deadlock'а - а именно, какие транзакции захватили какие блокировки?

320