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

Форум MySQL

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

 

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

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

тема: Запрос, выводящий ТОП комментаторов
 
 автор: provodnik   (31.08.2009 в 13:34)   письмо автору
 
 

Добрый день.
Прошу помощи в составлении запроса.
Есть таблица c комментариями "comments":

id  |  id_news  |  autor  |  text
1  |  20 | вася  |  текст_комментария
2  |  34 | петя | текст_комментария
3  |  36 | олег |  текст_комментария
4  |  41 | вася |  текст_комментария
5  |  44 | вася  |  текст_комментария
6  |  52 | олег |  текст_комментария


Подскажите примерный запрос к БД, что бы получить имена 10-ти авторов и количество их комментариев в порядке уменьшения количества комментариев.
Вроде всё просто и наглядно, но я никак сообразить не могу :(

Спасибо

  Ответить  
 
 автор: Trianon   (31.08.2009 в 13:49)   письмо автору
 
   для: provodnik   (31.08.2009 в 13:34)
 

запрос COUNT() с группировкой по полю имени автора.
А что у Вас не получается?

  Ответить  
 
 автор: provodnik   (31.08.2009 в 14:44)   письмо автору
 
   для: Trianon   (31.08.2009 в 13:49)
 

Я вот смотрю на решение, придложенное г-ном Trianon, и думаю - ведь действительно не сложно, и почему я сам не догадался, и, вдруг понял - я не корректно описал условие и задачу :( Прошу прощения :(

В таблице есть ещё столбец autor_mail, в котором лежат почтовые адреса авторов.
Это поле нам помогает однозначно идентифицировать автора.

id  |  id_news  |  autor  |  autor_mail  |  text
1  |  20 | вася  |  vasya@ya.ru  |  текст_комментария
2  |  34 | петя |  petr@ya.ru  |  текст_комментария
3  |  36 | олег | oleg@ya.ru   |  текст_комментария
4  |  41 | вася |  vasya@ya.ru  |  текст_комментария
5  |  44 | вася  |  2vasya@ya.ru  |  текст_комментария
6  |  52 | олег |  oleg@ya.ru  |  текст_комментария


Т.е. задача усложняется, т.к. нужно считать количество строк, у которых одинаковы поля autor и autor_mail

  Ответить  
 
 автор: Valick   (31.08.2009 в 14:47)   письмо автору
 
   для: provodnik   (31.08.2009 в 14:44)
 

у которых одинаковы поля autor и autor_mail
это как это?
если autor_mail идентифицирует однозначно, по нему и группируйте
или у вас на 1 autor_mail существует много autor?
группируйте по двум полям (autor_mail,autor )

  Ответить  
 
 автор: Trianon   (31.08.2009 в 14:50)   письмо автору
 
   для: provodnik   (31.08.2009 в 14:44)
 

А вот это, извините, уже начинает пахнуть дерь.. сырь...нормализованной схемой.
И ну её нафиг. :)
Ну либо никто ж не мешает сделать группировку по e-mail, считая что никакихх имен нет, уж коль скоро они ничего не значат.

  Ответить  
 
 автор: Valick   (31.08.2009 в 14:45)   письмо автору
 
   для: Trianon   (31.08.2009 в 13:49)
 

запрос COUNT() с группировкой по полю имени автора
а убывание?

  Ответить  
 
 автор: Sergeich   (31.08.2009 в 14:59)   письмо автору
 
   для: Valick   (31.08.2009 в 14:45)
 

Убывание и ограничение 10-ю авторами решается добавлением в конец запроса к базе следующего:
desc limit 10

  Ответить  
 
 автор: provodnik   (31.08.2009 в 15:02)   письмо автору
 
   для: provodnik   (31.08.2009 в 13:34)
 

Очень не хочется делать новую таблицу для авторов.
Очень хочется обойтись уже существующей структурой :(

  Ответить  
 
 автор: Trianon   (31.08.2009 в 15:10)   письмо автору
 
   для: provodnik   (31.08.2009 в 15:02)
 

SELECT author, author_mail, COUNT(*) AS cnt
  FROM tbl 
  GROUP BY author, author_mail
  ORDER BY cnt DESC 
  LIMIT 10

  Ответить  
 
 автор: Valick   (31.08.2009 в 15:13)   письмо автору
 
   для: Trianon   (31.08.2009 в 15:10)
 

может всё-таки достаточно группировки по author_mail?

  Ответить  
 
 автор: provodnik   (31.08.2009 в 15:19)   письмо автору
 
   для: Valick   (31.08.2009 в 15:13)
 

>>> может всё-таки достаточно группировки по author_mail?
Я спорить не берусь, но мне кажется группировать по обоим полям более правильнее.
Хотя, как верно подметил выше г-н Trianon - поле author_mail является более приоритетным, т.к. оно по крайней мере уникально.
Поэтому, возможно, и хватит группировки только по одному этому полю.

Спасибо всем...

  Ответить  
 
 автор: Trianon   (31.08.2009 в 15:37)   письмо автору
 
   для: provodnik   (31.08.2009 в 15:19)
 

>>>> может всё-таки достаточно группировки по author_mail?
>Я спорить не берусь, но мне кажется группировать по обоим полям более правильнее.
>Хотя .. поле author_mail является более приоритетным, т.к. оно по крайней мере уникально.

Оно ключевое, а не уникальное. Будь оно уникальным, группировать по нему строки не было никакого смысла.

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

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