|
|
|
| Добрый день.
Прошу помощи в составлении запроса.
Есть таблица c комментариями "comments":
id | id_news | autor | text
1 | 20 | вася | текст_комментария
2 | 34 | петя | текст_комментария
3 | 36 | олег | текст_комментария
4 | 41 | вася | текст_комментария
5 | 44 | вася | текст_комментария
6 | 52 | олег | текст_комментария
|
Подскажите примерный запрос к БД, что бы получить имена 10-ти авторов и количество их комментариев в порядке уменьшения количества комментариев.
Вроде всё просто и наглядно, но я никак сообразить не могу :(
Спасибо | |
|
|
|
|
|
|
|
для: provodnik
(31.08.2009 в 13:34)
| | запрос COUNT() с группировкой по полю имени автора.
А что у Вас не получается? | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: provodnik
(31.08.2009 в 14:44)
| | у которых одинаковы поля autor и autor_mail
это как это?
если autor_mail идентифицирует однозначно, по нему и группируйте
или у вас на 1 autor_mail существует много autor?
группируйте по двум полям (autor_mail,autor ) | |
|
|
|
|
|
|
|
для: provodnik
(31.08.2009 в 14:44)
| | А вот это, извините, уже начинает пахнуть дерь.. сырь...нормализованной схемой.
И ну её нафиг. :)
Ну либо никто ж не мешает сделать группировку по e-mail, считая что никакихх имен нет, уж коль скоро они ничего не значат. | |
|
|
|
|
|
|
|
для: Trianon
(31.08.2009 в 13:49)
| | запрос COUNT() с группировкой по полю имени автора
а убывание? | |
|
|
|
|
|
|
|
для: Valick
(31.08.2009 в 14:45)
| | Убывание и ограничение 10-ю авторами решается добавлением в конец запроса к базе следующего:
| |
|
|
|
|
|
|
|
для: provodnik
(31.08.2009 в 13:34)
| | Очень не хочется делать новую таблицу для авторов.
Очень хочется обойтись уже существующей структурой :( | |
|
|
|
|
|
|
|
для: 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
|
| |
|
|
|
|
|
|
|
для: Trianon
(31.08.2009 в 15:10)
| | может всё-таки достаточно группировки по author_mail? | |
|
|
|
|
|
|
|
для: Valick
(31.08.2009 в 15:13)
| | >>> может всё-таки достаточно группировки по author_mail?
Я спорить не берусь, но мне кажется группировать по обоим полям более правильнее.
Хотя, как верно подметил выше г-н Trianon - поле author_mail является более приоритетным, т.к. оно по крайней мере уникально.
Поэтому, возможно, и хватит группировки только по одному этому полю.
Спасибо всем... | |
|
|
|
|
|
|
|
для: provodnik
(31.08.2009 в 15:19)
| | >>>> может всё-таки достаточно группировки по author_mail?
>Я спорить не берусь, но мне кажется группировать по обоим полям более правильнее.
>Хотя .. поле author_mail является более приоритетным, т.к. оно по крайней мере уникально.
Оно ключевое, а не уникальное. Будь оно уникальным, группировать по нему строки не было никакого смысла. | |
|
|
|