|
|
|
| Нужно в процессе выполнения запроса сохранить значения полей в переменных, чтобы потом при изменении этих полей отталкиваться от их первоначального значения.
UPDATE
stats,
options
SET
@value = stats.value,
@added = stats.added,
stats.value = FLOOR(@value * options.multiplier + 0.001) - @value,
stats.added = FLOOR(@value * options.multiplier + 0.001) - @added
WHERE
options.id_method = stats.id_method AND
FLOOR(@value * options.multiplier + 0.001) - @added - @value > 0
|
Объясняю кусок этого кода - надо в рассчетах в зависимости от значения параметра multiplier этого рассчета подкручивать значение. При этом надо сохранять полученное значение и число, на которое это значение было увеличено.
value - целое поле,
multiplier - дробное (отсюда и "+0.001" - фиксим баг с погрешностью при перемножении целого и дробного поля в мускуле).
Куда нужно впихнуть выделенное жирным, чтобы все заработало? | |
|
|
|
|
|
|
|
для: Reша
(02.05.2007 в 16:40)
| | Неужели никто не знает? оО | |
|
|
|
|
|
|
|
для: Reша
(02.05.2007 в 16:40)
| | Переменные можно заполнять только в операторах которые извлекают значения из базы данных и специальном операторе SET - в UPDATE обновить переменную не получится. | |
|
|
|
|
|
|
|
для: cheops
(03.05.2007 в 13:16)
| | Поясню - как раз я и спрашивал, как мне запомнить переменные. Я не собираюсь их обновлять, мне надо их запомнить один раз, перед обновлением полей таблицы.
Повторяю вопрос: куда сунуть выделенное жирным?
P.S. Пробовал комбинировать запрос с этим оператором SET - выдает ошибки. | |
|
|
|
|
|
|
|
для: Reша
(03.05.2007 в 14:08)
| | Значение переменных постоянно или изменяется от строки к строке? | |
|
|
|
|
|
|
|
для: cheops
(03.05.2007 в 14:44)
| | А ну если ты в этом плане говоришь, то да... изменяется. Тогда понял. | |
|
|
|