Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> mysql: некорректно выбирает запись, с максимальным значением в опред. поле 
V
    Опции темы
Risyaalex
Дата 13.1.2011, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Все идет по плану...
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 22.7.2010

Репутация: нет
Всего: нет



столкнулась с таким вопросом -
таблица foto
id   ........ rating ....... lider
мне нужно выбрать строку с максимальным значением столбца rating и записать '1'  в столбец lider этой строки
 делаю такой запрос:
Код

$sql="UPDATE `foto` SET `lider`='0'";
mysql_query($sql);
$sql2=("SELECT `id` FROM `foto` ORDER BY `rating` DESC LIMIT 1");
mysql_query($sql2);
$arr=mysql_fetch_assoc($sql2);
echo $arr['id'];
$id=$arr['id'];
$sql3="UPDATE `foto` SET `lider`='1' WHERE `id`='$id'";
mysql_query($sql3);


в localhost  все отрабатывает отлично, выбирает как и положено. выложила на хостинг - выбирает строку какую сам захочет, даже логику выбора проследить не могу...
PM MAIL ICQ   Вверх
triclosan
Дата 13.1.2011, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 515
Регистрация: 18.8.2006

Репутация: 3
Всего: 12



 1

Это сообщение отредактировал(а) triclosan - 13.1.2011, 19:33
PM MAIL   Вверх
Frees
Дата 14.1.2011, 08:10 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 2
Всего: 54



Цитата(Risyaalex @  13.1.2011,  22:20 Найти цитируемый пост)
Выбирает строку какую сам захочет, даже логику выбора проследить не могу...

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




--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Deniz
Дата 14.1.2011, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 6
Всего: 44



Можно добавить id в order by
Код
SELECT `id` FROM `foto` ORDER BY `rating` DESC, `id`LIMIT 1



--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Akina
Дата 14.1.2011, 08:46 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 14.1.2011, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Akina @  14.1.2011,  08:46 Найти цитируемый пост)
Само собой, влоб это не получится - нужно создать вьюв, возвращающий нужный ID, и джойнить его в условиях отбора.

не совсем понял.
разве так нельзя?
Код

UPDATE `foto` SET `lider`='1' WHERE `id`=(SELECT `id` FROM `foto` ORDER BY `rating` DESC/*,`id`*/ LIMIT 1)


Добавлено через 2 минуты и 6 секунд
или тогда уж ваще, вместо всех трех
Код

UPDATE `foto` SET `lider`= case when `id`=(SELECT `id` FROM `foto` ORDER BY `rating` DESC/*,`id`*/ LIMIT 1) then '1' else '0' end 



--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 14.1.2011, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(Zloxa @  14.1.2011,  09:54 Найти цитируемый пост)
разве так нельзя?

В MySQL (а речь именно о нём) - увы, он не позволяет использовать в подзапросе изменяемую таблицу. И использование промежуточной вьюшки - именно способ обхода этого ограничения.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 14.1.2011, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Akina, понял, спасибо.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Risyaalex
Дата 14.1.2011, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Все идет по плану...
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 22.7.2010

Репутация: нет
Всего: нет



Цитата(Frees @  14.1.2011,  08:10 Найти цитируемый пост)
может несколько записей с одинаковым(максимальным) рейтингом, 
сортировка по рейтингу, но верхняя запись меняется..


нет, записи все разные...
PM MAIL ICQ   Вверх
Frees
Дата 14.1.2011, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 2
Всего: 54



Цитата(Risyaalex @  14.1.2011,  12:56 Найти цитируемый пост)
нет, записи все разные...

а рейтинг у них тоже разный?


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Risyaalex
Дата 14.1.2011, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Все идет по плану...
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 22.7.2010

Репутация: нет
Всего: нет



Цитата(Frees @  14.1.2011,  10:16 Найти цитируемый пост)
а рейтинг у них тоже разный? 


Да, я специально уже все  просмотрела. все записи разные и рейтинг нигде не повторяется - и самое главное на локалхосте все работает отлично, проверяла много раз. то же самое выкладываю на хостинг - и не работает...
PM MAIL ICQ   Вверх
Frees
Дата 14.1.2011, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 2
Всего: 54



может на живом сервере лидер часто меняется ?

Добавлено через 44 секунды
Цитата(Risyaalex @  14.1.2011,  14:19 Найти цитируемый пост)
и самое главное на локалхосте все работает отлично

база и сами данные идентичны серверной?


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Risyaalex
Дата 14.1.2011, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Все идет по плану...
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 22.7.2010

Репутация: нет
Всего: нет



Цитата(Frees @  14.1.2011,  11:40 Найти цитируемый пост)
может на живом сервере лидер часто меняется ?


нет, этот скрипт я пока тестирую, запускаю вручную ( из 5 фото с разным рейтингом - выбрать с наибольшим) 
- он вообще будет запускаться кроном раз в месяц


Цитата(Frees @  14.1.2011,  11:40 Найти цитируемый пост)
база и сами данные идентичны серверной? 


да - просто дамп базы сделала и все
PM MAIL ICQ   Вверх
Akina
Дата 14.1.2011, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(Risyaalex @  13.1.2011,  20:20 Найти цитируемый пост)
выложила на хостинг - выбирает строку какую сам захочет, даже логику выбора проследить не могу... 

В смысле при выполнении второго запроса возвращается не id записи с макс. рейтингом, а произвольный id (строка 6)? А сколько записей при этом возвращается? точно одна-единственная? 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Risyaalex
Дата 14.1.2011, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Все идет по плану...
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 22.7.2010

Репутация: нет
Всего: нет



Цитата(Akina @  14.1.2011,  12:51 Найти цитируемый пост)
В смысле при выполнении второго запроса возвращается не id записи с макс. рейтингом, а произвольный id (строка 6)? А сколько записей при этом возвращается? точно одна-единственная? 

 возвращается одна запись - пока в таблице ничего не меняется возвращается одна и таже (например id 59 - хотя по рейтингу она например четвертая из пяти), добавляю или удаляю фото, или меняю значение рейтинга - и возвращается другая запись, тоже не понятно по какому параметру отобранная

PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0599 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.