MySQL меняет значение в зависимости от его исходного значения - PullRequest
1 голос
/ 04 ноября 2010

Привет всем, Долгое время читатель, первый постер.

Похоже, это должно быть действительно просто, но я нигде не могу найти решение. Я строю систему рейтингов, где люди могут оценивать, если что-то активно или нет. У него своя маленькая логика, но для работы мне нужно.

  1. проверить рейтинг предметов
  2. в зависимости от текущего рейтинга измените его на предварительно установленную величину.

Я мог бы жестко запрограммировать его в PHP с двумя операторами SQL, но я уверен, что использование одной хранимой процедуры (одна для голосования, другая для голосования) будет намного быстрее.

пример таблицы:

item_id | item_rating
---------------------
   10   |    1

логика для голосования. Item_rating up:

if | then
---------
 0 |  1
 1 |  2
-1 |  1
-2 |  1
 2 |  2

логика для голосования: item_rating down:

if | then
---------
 0 | -1
 1 | -1
-1 | -2
-2 | -2
 2 | -1

Я знаю, что простая система, основанная на точках, будет проще, но из-за природы системы это самое простое решение, которое я могу найти.

Может кто-нибудь объяснить, как я бы использовал операторы IF в SQL для достижения этой цели? Я уверен, что ответ действительно очевиден для кого-то в курсе.

(кстати, используя последнюю версию MySQL)

Ответы [ 2 ]

3 голосов
/ 04 ноября 2010

Это то, что вы ищете?Вот голос:

UPDATE rating
SET item_rating = IF(item_rating < 1, 1, 2);

Вот голос:

UPDATE rating
SET item_rating = IF(item_rating > -1, -1, -2);
0 голосов
/ 04 ноября 2010

Это не проверено, но я думаю, что это должно работать.

update items i
set item_rating = (select i.item_rating + `then` from item_rating
                   where `if` = i.item_rating)
where i.item_id = 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...