15 запросов update в один

Acidrayne

Местный житель
Регистрация
30 Сен 2007
Сообщения
296
Реакции
20
Добрый день подскажите у меня есть запрос типа:

PHP:
mysql_query("UPDATE planet SET ruda =ruda + 100 WHERE lvl = 1");

В игре 15 уровней, ресурсы добаляются разное колличество в зависимоти от уровня, возможно ли объединить 15 запросов в один, в зависимости от уровня!
 
Добрый день подскажите у меня есть запрос типа:
PHP:
mysql_query("UPDATE planet SET ruda =ruda + 100 WHERE lvl = 1");
В игре 15 уровней, ресурсы добаляются разное колличество в зависимоти от уровня, возможно ли объединить 15 запросов в один, в зависимости от уровня!
ты хочешь чтобы прошли 15 запросов с lvl = 1 2 3... Или ты хочешь чтобы зарос менялся в зависимости от уровня?
 
Добрый день подскажите у меня есть запрос типа:
PHP:
mysql_query("UPDATE planet SET ruda =ruda + 100 WHERE lvl = 1");
В игре 15 уровней, ресурсы добаляются разное колличество в зависимоти от уровня, возможно ли объединить 15 запросов в один, в зависимости от уровня!
Код:
UPDATE planet SET ruda = ruda +
CASE lvl
  WHEN 1 then 100
...
  WHEN 15 then 10
  ELSE 0
END
 
если зависит от уровня значит какая-то формула расчёта есть, тогда надо всю формулу в запрос подставить, например

PHP:
mysql_query("UPDATE planet SET ruda =ruda + 100*lvl");
 
если выполнять множество запросов на обновление в одной транзакции,
они будут выполняться быстрее в разы.
 
спасибо всем за ответы, у меня неделю небыло интернета, поэтому я не мог сюда зайти!

если выполнять множество запросов на обновление в одной транзакции,
они будут выполняться быстрее в разы.

не могли бы вы ответить поконкретнее ?
 
Нужно использовать таблицы, поддерживающих транзакции: InnoDB, BDB.

Формат следующий:
PHP:
START TRANSACTION; 
UPDATE accounts SET Sum = Sum - 10 WHERE Number = 123; 
UPDATE accounts SET Sum = Sum + 10 WHERE Number = 67; 
COMMIT;
START TRANSACTION - начало транзакции,
COMMIT - конец транзакции.
Если в процессе запросов вылезли ошибки, то отбновление таблиц не пройизодет.
Между этими командами вставляются нужные запросы.

p.s. На счет выигрыша в скорости не особо уверен. Сам не пользуюсь.
 
если зависит от уровня значит какая-то формула расчёта есть, тогда надо всю формулу в запрос подставить, например
PHP:
mysql_query("UPDATE planet SET ruda =ruda + 100*lvl");

lvl в данном случае можно брать из этой же таблицы, или его нужно учитывать отдельно ?
 
да можно брать все значения из текущей обновляемой строки в таблице
Код:
UPDATE planet SET tree = tree + 1, ruda = tree*10/round((lvl+1)/2)
также и комбинации таблиц
Код:
UPDATE planeta p, user u SET p.ruda=p.ruda+10*u.lvl
WHERE p.user_id=u.id;
математические функции
 
да можно брать все значения из текущей обновляемой строки в таблице
Код:
UPDATE planet SET tree = tree + 1, ruda = tree*10/round((lvl+1)/2)
также и комбинации таблиц
Код:
UPDATE planeta p, user u SET p.ruda=p.ruda+10*u.lvl
WHERE p.user_id=u.id;
математические функции
*** скрытое содержание ***


то-есть я понимаю так, если в таблице присутствует строка ячейка lvl. такое выражение автоматически подставит lvl из текущей обрабатываемой таблицы ?
 
Назад
Сверху