• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
Форум » TrinityCore » [TrinityCore] Help » Запрос в БД (Скрипт)
Запрос в БД
M1sTerY
Database Developer
Ув. пользователи форума, помогите/подскажите, мне нужно изменить в шмотках рейтинг скорости и установить к примеру 200, но только в шмотках где рейтинг скорости выше 500. 
примерно это так "Update item_template set stat_value1=300 where stat_type=28, 29, 30, 36  Тут не знаю что писать  stat_value1=>500 
Вообщем нужно установить рейтинг скорости только в тех вещах, в которых рейтинг скорости превышает 500
Сообщение # 1 написано 24.06.2016 в 19:25
Sergey996
Чемпион
Код
UPDATE item_template set stat_value1 = 300 WHERE stat_type IN (28, 29, 30, 36)  AND  stat_value1 >= 500;
Продажа готовых сборок cataclysm 4.3.4, legion (7.3.5), shadowlands, draginflight. Исправление спеллов, квестов, крашей на любых версиях вов. Цена договорная. Пишите в лс, не дорого.
Сообщение # 2 написано 25.06.2016 в 01:38
p620
Маршал
Sergey996, это даже не выполнится, не говоря уже о том, что и логика некорректная.
M1sTerY, для стопроцентной точности Вам нужно проверять в каждом предмете каждый `stat_type` и, если он является рейтингом скорости, а соответствующее ему `stat_value` содержит значение выше '500', устанавливать его равным '200'. Пример условия:
Код
... `stat_typeX` IN ('28', '29', '30', '36') AND `stat_typeX` > '500' ...

где 'X' в названии поля - индекс в интервале [1, 10].
Сообщение # 3 написано 25.06.2016 в 16:01
Sergey996
Чемпион
Цитата p620 ()
Sergey996, это даже не выполнится, не говоря уже о том, что и логика некорректная.


Еще вопросы? Все выполняется. stat_type сделано как у автора специально, я же не знаю какая у его сборка.
Продажа готовых сборок cataclysm 4.3.4, legion (7.3.5), shadowlands, draginflight. Исправление спеллов, квестов, крашей на любых версиях вов. Цена договорная. Пишите в лс, не дорого.
Сообщение # 4 написано 26.06.2016 в 20:39
Desed
Командир
UPDATE item_template set `stat_value1` = '300' WHERE `stat_type1` IN (28, 29, 30, 36) AND `stat_value1` >= '500';
UPDATE item_template set `stat_value2` = '300' WHERE `stat_type2` IN (28, 29, 30, 36) AND `stat_value2` >= '500';
UPDATE item_template set `stat_value3` = '300' WHERE `stat_type3` IN (28, 29, 30, 36) AND `stat_value3` >= '500';
UPDATE item_template set `stat_value4` = '300' WHERE `stat_type4` IN (28, 29, 30, 36) AND `stat_value4` >= '500';
UPDATE item_template set `stat_value5` = '300' WHERE `stat_type5` IN (28, 29, 30, 36) AND `stat_value5` >= '500';
UPDATE item_template set `stat_value6` = '300' WHERE `stat_type6` IN (28, 29, 30, 36) AND `stat_value6` >= '500';
UPDATE item_template set `stat_value7` = '300' WHERE `stat_type7` IN (28, 29, 30, 36) AND `stat_value7` >= '500';
UPDATE item_template set `stat_value8` = '300' WHERE `stat_type8` IN (28, 29, 30, 36) AND `stat_value8` >= '500';
UPDATE item_template set `stat_value9` = '300' WHERE `stat_type9` IN (28, 29, 30, 36) AND `stat_value9` >= '500';
UPDATE item_template set `stat_value10` = '300' WHERE `stat_type10` IN (28, 29, 30, 36) AND `stat_value10` >= '500';
Сообщение # 5 написано 26.06.2016 в 23:31
p620
Маршал
Цитата Sergey996 ()
Еще вопросы? Все выполняется.

Моя вина, неправильно интерпретировал намерения. У автора там, судя по всему, просто псевдокод, Вы его переняли (причем только в случае с колонкой типа, а не значения), и я решил, что Вы ошибаетесь.
Сообщение # 6 написано 27.06.2016 в 13:09
Ranege
Чемпион
= используется когда единственное значение. Если же выбор состоит из одного или нескольких значений, как у Вас, то используется in (), в скобках через запятую указываются значения. Если же условий несколько, то используется AND и задаётся новое условие, использовать можно много. Если вдруг понадобится изменить значение нескольких полей в одном запросе, это делается в SET также через запятую.
Сообщение # 7 написано 28.06.2016 в 05:10
Форум » TrinityCore » [TrinityCore] Help » Запрос в БД (Скрипт)
  • Страница 1 из 1
  • 1
Поиск: