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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Максимальное значение столбца по грeппе 
:(
    Опции темы
mogul82
Дата 12.8.2009, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Раньше вроде так делал а ща не получаеться, хотя так же как в мануале написано.

Код

"SELECT id, level, category, MAX(level) AS level FROM sad GROUP BY category"


Как тока не пробывал. НОвозвращает всегда не макс. , а первый попавшийся в группе.
Помогитe. F1, F1, F1

Добавлено через 40 секунд
Если шо то это MySQL
PM MAIL   Вверх
Gluttton
Дата 12.8.2009, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


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

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



Цитата

Раньше вроде так делал а ща не получаеться, хотя так же как в мануале написано.
Код

SELECT id, level, category, MAX(level) AS level FROM sad GROUP BY category


Странно... Такой запрос не должен вообще работать...
Группировка (кроме случаев использования оконных функций) должна проводиться по всем полям, т.е.
Код

SELECT id, level, category, MAX(level) AS level FROM sad GROUP BY id, level, category

При этом не вижу смысла проводить группировку по тому же полю, по которому работает "агрегат".

Как альтернативу предлагаю вот такой запрос:
Код

SELECT id, category, MAX(level) AS level FROM sad GROUP BY id, category


Может подойдет  smile ...


--------------------
Слава Україні!
PM MAIL   Вверх
mogul82
Дата 12.8.2009, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Стер сообщение

Добавлено через 3 минуты
Не работает, не то возвращает, Возвращает первые три id и все. А должно вернуть id: 3,6,7

Добавлено через 4 минуты и 50 секунд
Во вернул максемальные level но выводить пришлось тока сами level, а надо вывести их id.
Вот:
Код

SELECT category, MAX(level) AS level FROM sad GROUP BY category


Добавлено через 6 минут и 11 секунд
А если прописать в селекте id, тоо вернет опять не то:

Код

SELECT id, MAX(level) AS level FROM sad GROUP BY category


Это сообщение отредактировал(а) mogul82 - 12.8.2009, 21:42
PM MAIL   Вверх
Gluttton
Дата 12.8.2009, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


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

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



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



--------------------
Слава Україні!
PM MAIL   Вверх
mogul82
Дата 12.8.2009, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



id   |   name |          level  | category 

1          volga            1000       1
2          oka               2000       1
3          lena              3000       1
4          maracus       1500        2
5          baycal           2000       2
6          dnepr            3000       2
7          lagos            1200        3
8          moskva         2000        3
 _______________________



Код

$res_1=mysql_query("SELECT *, MAX(level) AS level FROM sad GROUP BY category") or die("Error_3");
$num_1=mysql_num_rows($res_1);

for($i_1=0; $i<$res_1; $i++)
{
    $id_1=mysql_result($res_1, $i, "id");
    
    echo "<br><br> <b>id: $id_1</b>";
}




Это сообщение отредактировал(а) mogul82 - 12.8.2009, 22:00
PM MAIL   Вверх
Gluttton
Дата 12.8.2009, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


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

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



Цитата

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


Что хочешь получить на выходе? Какие данные?


--------------------
Слава Україні!
PM MAIL   Вверх
mogul82
Дата 12.8.2009, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А результат я жду: id - 3, 6, 8

Это сообщение отредактировал(а) mogul82 - 12.8.2009, 22:26
PM MAIL   Вверх
Gluttton
Дата 12.8.2009, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


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

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



Код

select id
from sad
    where level=
    (
        select max(level) as m from sad
    )


Но это для id=3, 6. А причем здесь 8? Может описАлся?


--------------------
Слава Україні!
PM MAIL   Вверх
mogul82
Дата 12.8.2009, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



НЕт не описался. Мне нужны знать у каких рек максимальный уровень (level). Относительно их группы.

Это сообщение отредактировал(а) mogul82 - 12.8.2009, 22:43
PM MAIL   Вверх
Gluttton
Дата 12.8.2009, 23:02 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


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

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



Код

select id
from sad,
(
    select category, max(level) as m from sad
    group by category
)   as s
    where sad.category=s.category
    and sad.level=s.m




--------------------
Слава Україні!
PM MAIL   Вверх
mogul82
Дата 12.8.2009, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Сп. Я вот тока не понимаю что такое там происходит: что такое s и m, и для чего скобки?
PM MAIL   Вверх
Gluttton
Дата 12.8.2009, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


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

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



Код

select id
выбрать id
from sad,
из таблицы sad и подзапроса s
(
    подзапрос s
    select category, max(level) as m from sad
    выбрать категории и максимальные в них уровни (и назвать это поле m) из таблицы sad
    group by category
)   as s
    where sad.category=s.category
    где одинаковые категории
    and sad.level=s.m
    и одинаковые уровни


Это сообщение отредактировал(а) Gluttton - 12.8.2009, 23:13


--------------------
Слава Україні!
PM MAIL   Вверх
Akina
Дата 13.8.2009, 07:55 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(mogul82 @  13.8.2009,  00:10 Найти цитируемый пост)
не понимаю что такое там происходит

См. http://forum.vingrad.ru/forum/topic-269432...y1941137/0.html - материал другой, но суть та же.


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

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


 




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


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

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