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

Форум MySQL

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

 

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

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

тема: Вопрос по группировке!
 
 автор: jonik   (17.06.2011 в 11:27)   письмо автору
 
 

Доброго времени суток! Есть задача, которую пока решить не удается((( итак..... есть таблица..
ID Name Depart Score
1 Вася Пупкин 2 78
2. Ваня Ивнов 3 90
3. Петя Сидоров 7 21
4. Катя Банина 2 200
5. Алексей Трофимов 2 40
6. Олег Поляков 7 2
7. Евгений Слободин 3 29

Итак... Предположим, что DEPART - это ключ на...скажем отдел, гед работают эти люди....... Надо сделать выборку по одному человеку из каждого отдела с минимальным SCORE..... итак... нужно чтобы результирующая таблица выглядела бы так:

ID Name Depart Score
5 Алексей Трофимов 2 40
7. Евгений Слободин 3 29
6. Олег Поляков 7 2

Если сделать SELECT id, name, depart, min(score) from table group by depart........... то вывод будет таким......

ID Name Depart Score
5 Вася Пупкин 2 40
7. Ваня Ивнов 3 29
6. Петя Сидоров 7 2

т.е. в группу попадает первая строка, и к ней прклеивается min(Score) из другой строки...... собственно вопрос... Как сделать так, чтобы на вывод шла ИМЕННО ТА СТРОКА где min(score) в данной группе?.. т.е. что-то типа сортировки внутри группы.........

  Ответить  
 
 автор: Lotanaen   (17.06.2011 в 11:33)   письмо автору
 
   для: jonik   (17.06.2011 в 11:27)
 

попробуйте таким запросом:
SELECT * FROM table GROUP BY Depart ORDER BY Score ASC

  Ответить  
 
 автор: jonik   (17.06.2011 в 11:46)   письмо автору
 
   для: Lotanaen   (17.06.2011 в 11:33)
 

Спасибо, но не пойдет))) он сделает сортировку среди уже отобранных людей((((((

  Ответить  
 
 автор: Lotanaen   (17.06.2011 в 12:10)   письмо автору
 
   для: jonik   (17.06.2011 в 11:46)
 

да действительно...

  Ответить  
 
 автор: cheops   (17.06.2011 в 11:39)   письмо автору
 
   для: jonik   (17.06.2011 в 11:27)
 

Тут вероятно придется прибегнуть к многотабличному запросу, создайте выборку по минимальным Score, соответствующих разным отделам и соединение её при помощи LEFT JOIN с исходной таблицей по Score.

  Ответить  
 
 автор: jonik   (17.06.2011 в 11:44)   письмо автору
 
   для: cheops   (17.06.2011 в 11:39)
 

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

  Ответить  
 
 автор: cheops   (17.06.2011 в 12:08)   письмо автору
 
   для: jonik   (17.06.2011 в 11:44)
 

Нет, штатных средств нет, GROUP BY всегда выбирает случайное значение.

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

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