Сравнение результата вычисления в MySQL запросе

Samail
На сайте с 10.05.2007
Offline
361
579

Есть запрос:

$query = " UPDATE `#__score` SET total = total * (round(((sum1 - sum2)/200000), 1) + 1) ";

Как сделать что-бы если "(round(((sum1 - sum2)/200000), 1) + 1)" больше 2 то total умножалось на 2, если меньше 1 то на 1, в остальных случаях на (round(((sum1 - sum2)/200000), 1) + 1).

И попутно вопрос, php скрипт ждёт пока MySQL пересчитает то что ему отправили прежде чем к следующему действию перейти? Если после этого запроса идёт следующий копирующий эту таблицу в другую таблицу, не может получиться что скопируются старые данные?

TF-Studio
На сайте с 17.08.2010
Offline
334
#1

1. последовательно

2. mysql - хранит // php - обрабатывает

придерживайтесь этой позиции

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
M
На сайте с 04.12.2013
Offline
223
#2
Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
Samail
На сайте с 10.05.2007
Offline
361
#3

Переделал на извлечение всех строк и пересчёт/обновление php скриптом в цикле.

edogs software
На сайте с 15.12.2005
Offline
775
#4
Samail:
Переделал на извлечение всех строк и пересчёт/обновление php скриптом в цикле.

Рано или поздно упретесь в скорость работы и тормоза. Первая Ваша мысль была разумнее.

Посмотрите синтаксис if case then по ссылке, что miketomlin дал.

---------- Добавлено 30.11.2016 в 19:02 ----------

TF-Studio:
2. mysql - хранит // php - обрабатывает
придерживайтесь этой позиции
В 2016 это на шутку похоже:)

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

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
Samail
На сайте с 10.05.2007
Offline
361
#5

edogs, я посмотрю на будущее. Но в данном случае в этой таблице бывает не больше 100 строк и выполняться процедура будет раз в неделю, поэтому сделал на том что мне понятнее.

S
На сайте с 23.05.2004
Offline
316
#6
Samail:
Если после этого запроса идёт следующий копирующий эту таблицу в другую таблицу, не может получиться что скопируются старые данные?

Запросто. Но можно это сделать в транзакции. Тогда все другие будут ждать, пока ваш скрипт не отработает задачу.

Это просто подпись.
TF-Studio
На сайте с 17.08.2010
Offline
334
#7
edogs:

---------- Добавлено 30.11.2016 в 19:02 ----------

В 2016 это на шутку похоже:)
Вместо обработки данных в одном месте на компилируемом языке, гонять их из одного места в другое и обратно до кучи обрабатывать данные на интерпретируемом языке.

сталкивался с масштабированием.

если меняться ничего не будет - то можно оставить

если система будет развиваться - то в этом месте может быть сильный затык

это - типичная крон-задача. и нежно прогнать её в цикле - если надо с задержками - явно менее заметно будет, нежели грузить БД.

опять же - вопрос масштабирования в целом. рационально, в случае роста сильного, а такое часто бывает

язык в данном случае не критичен для понимания самого процесса

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий