Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: CASE в запросе
 
 автор: Sturmvogel   (20.01.2011 в 12:29)   письмо автору
 
 

Пишу такой запрос:

UPDATE users SET views=views+1, 
                                 full_rating = CASE 
                                     WHEN id='$Na' THEN '$Ra' 
                                     WHEN id='$Nb' THEN '$Rb' END 
                                 WHERE id IN ('$Na', '$Nb')


Он трансформируется в

UPDATE users SET views=views+1, full_rating = CASE WHEN id='30' THEN '0' WHEN id='37' THEN '1675' END WHERE id IN ('30', '37')


Но в базе данных ничего не меняется... Если руками вбить этот запрос через phpMyAdmin, меняется только 1 строка и только 1 столбец

  Ответить  
 
 автор: Trianon   (20.01.2011 в 12:39)   письмо автору
 
   для: Sturmvogel   (20.01.2011 в 12:29)
 

как отсюда можно понять, что должно меняться, а что не должно?

  Ответить  
 
 автор: Sturmvogel   (20.01.2011 в 12:42)   письмо автору
 
   для: Trianon   (20.01.2011 в 12:39)
 

Изначально все поля инициализированы нулями....

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

  Ответить  
 
 автор: Trianon   (20.01.2011 в 12:48)   письмо автору
 
   для: Sturmvogel   (20.01.2011 в 12:42)
 

>Изначально все поля инициализированы нулями....

>Соответственно, поменяться значения должны в ненулевых полях.
Это с какой такой радости? Единственное поле, которое меняет этот запрос - поле views.
Да и оно изменится лишь в том случае, если было определено хотя бы как 0.
Если поле было NULL - оно не изменится. NULL означает "неизвестно".
"неизвестно"+1 - точно также неизвестно.

>Как минимум должны увеличиться views на единицу в выбранных строках...
Вот именно. В выбранных строках. Дампа нет. Есть ли у Вас в таблице вообще выбираемые строки, никому неизвестно.

Давайте дамп (хотя бы фрагмент, если сильно велик) - тогда можно будет что-то говорить.

  Ответить  
 
 автор: Sturmvogel   (20.01.2011 в 12:54)   письмо автору
1.3 Кб
 
   для: Trianon   (20.01.2011 в 12:48)
 

Вот файл экспорта данной таблицы

PS:
>> Единственное поле, которое меняет этот запрос - поле views.
а "равно" в full_rating=... разве не означает, что значение этого поля должно быть установлено?

  Ответить  
 
 автор: Trianon   (20.01.2011 в 13:00)   письмо автору
 
   для: Sturmvogel   (20.01.2011 в 12:54)
 

да. >Вот файл экспорта данной таблицы
>а "равно" в full_rating=... разве не означает, что значение этого поля должно быть установлено?

да, конечно, full_rating тоже.


Судя по структуре, вы пытаетесь присвоить полю значения несвойственного ему типа.
(Да и при сравнении тоже мешаете типы)
Поля у Вас целочисленные, а значения Вы присваиваете строковые.

  Ответить  
 
 автор: Sturmvogel   (20.01.2011 в 13:27)   письмо автору
 
   для: Trianon   (20.01.2011 в 13:00)
 

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

Спасибо за помощь.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования