|
|
|
| Скажите пожалуйста можно ли так делать
UPDATE `users` SET `users_rating`=(`users_posrating`-`users_negrating`)-1 WHERE `users_login`=? LIMIT 1;"
|
то есть при обновлениии users_rating брать разницу полей users_posrating и users_negrating
у меня вроде бы все работает нормально, но если сумма (`users_posrating`-`users_negrating`)-1 менее нуля, то в базу почему то записывается число 8388607, хотя поле не UNSIGNED, а если более нуля, то все считает правильно
вот структура
`users_rating` mediumint(8) NOT NULL default '0',
`users_posrating` mediumint(8) unsigned NOT NULL default '0',
`users_negrating` mediumint(8) unsigned NOT NULL default '0',
|
| |
|
|
|
|
|
|
|
для: Max_Ivanov
(14.05.2011 в 15:49)
| | Так у вас поля users_posrating и users_negrating как раз UNSIGNED, следовательно результат преобразования получается тоже UNSIGNED. Тут вероятно потребуется преобразовать значение полей перед операцией вычитания, например, при помощи CAST. | |
|
|
|
|
|
|
|
для: cheops
(14.05.2011 в 17:30)
| | спасибо, так все работает нормально
`users_rating`=CAST(`users_posrating`-`users_negrating` AS SIGNED)-1
|
| |
|
|
|