Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Максимальное значение mysql


Автор: andryus 13.4.2011, 13:19
Нужно выбрать максимальное значение разницы между двумя показателями stat и stat_old в таблице. Код:
Код

$qs = @mysql_query( "SELECT MAX(stat-stat_old) AS vales, id  FROM table" );
while ( $rs = @mysql_fetch_array( $qs ) )
{
  echo($rs[id]);
}


при выводе 
Код

  echo($rs[vales]);


Правильно выбирает максимальное значение и выводит правильный результат, НО вот почему то при выводе в данном коде:

Код

  echo($rs[id]);


выводит id не того значения в списке. Почему так?

Автор: Zloxa 13.4.2011, 13:35
Цитата(andryus @  13.4.2011,  13:19 Найти цитируемый пост)
Почему так? 

по http://dev.mysql.com/doc/refman/5.0/en/group-by-hidden-columns.html.
Цитата

The server is free to return any value from the group, so the results are indeterminate unless all values are the same


Добавлено через 2 минуты и 17 секунд
Цитата(andryus @  13.4.2011,  13:19 Найти цитируемый пост)
Нужно выбрать максимальное значение разницы между двумя показателями stat и stat_old в таблице

Код

SELECT stat-stat_old AS vales, id  FROM table order by vales desc limit 1


Автор: andryus 13.4.2011, 13:38
Цитата(Zloxa @ 13.4.2011,  13:35)
Цитата(andryus @  13.4.2011,  13:19 Найти цитируемый пост)
Почему так? 

Цитата

The server is free to return any value from the group, so the results are indeterminate unless all values are the same

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

Автор: Zloxa 13.4.2011, 13:40
Цитата(andryus @  13.4.2011,  13:38 Найти цитируемый пост)
я вообще-то вопрос задал с целью узнать как найти выход для решения данной задачи 

Спросили же вы совсем не это. Впредь будьте внимательнее.

Автор: Deniz 13.4.2011, 13:46
Цитата(Zloxa @  13.4.2011,  15:35 Найти цитируемый пост)
SELECT stat-stat_old AS vales, id  FROM table order by vales desc limit 1
и дополнить stat-stat_old функцией abs или как там она в MySQL, если вдруг stat_old окажется сильно больше.

Автор: andryus 13.4.2011, 13:47
Цитата(Zloxa @ 13.4.2011,  13:40)
Цитата(andryus @  13.4.2011,  13:38 Найти цитируемый пост)
я вообще-то вопрос задал с целью узнать как найти выход для решения данной задачи 

Спросили же вы совсем не это. Впредь будьте внимательнее.

Ну да. Прошу прощения. Вопрос не верный поставил в конце сообщения

Автор: Zloxa 13.4.2011, 13:53
Deniz, да, если бы задача стояла так, как она сформулирована, твое замечание прямо в точку. 

Однако ж усомниться меня заставляет уточнение:
Цитата(andryus @  13.4.2011,  13:19 Найти цитируемый пост)
Правильно выбирает максимальное значение

 smile 

Автор: Deniz 14.4.2011, 06:09
Цитата(Zloxa @  13.4.2011,  15:53 Найти цитируемый пост)
Однако ж усомниться меня заставляет уточнение:...
Я просто обратил внимание автора на возможные проблемы в будущем (если постановка все же правильная и нет ограничения в таблице что stat всегда больше stat_old).
А текущие "правильные" значения могут быть врЕменными.

Автор: andryus 14.4.2011, 13:39
Цитата(Deniz @ 14.4.2011,  06:09)
Я просто обратил внимание автора на возможные проблемы в будущем (если постановка все же правильная и нет ограничения в таблице что stat всегда больше stat_old).
А текущие "правильные" значения могут быть врЕменными.

А какие могут быть проблемы если stat меньше stat_old? Данный факт возможен.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)