Топ 5 с большинством друзей - PullRequest
0 голосов
/ 06 августа 2009

Привет, я новичок в SQL и пытаюсь выяснить, как я собираюсь получить топ-5 "групп" с ​​большинством друзей (userId), и это то, что у меня есть; usertbl с userId в качестве PK, затем bandTbl с bandId в качестве PK, тогда у меня есть таблица bandfriends с FK userId и bandId.

bandfriends
userid | bandId
---------------
 1     | 1
 1     | 2
 1     | 3

Спасибо! * * 1004

Ответы [ 3 ]

5 голосов
/ 06 августа 2009
SELECT TOP 5 bandId, fanCount
FROM 
    (SELECT bandId, COUNT(*) as fanCount
     FROM bandfriends
     GROUP BY bandId
     ORDER BY COUNT(*) DESC)

Вы также можете указать WITH TIES в операторе выбора.См. это и это .

2 голосов
/ 06 августа 2009
select top 5 b.b_name, count(friends) as numOfFriends 
from bands b inner join link l on b.b_id = l.bands inner join
friends f on f.f_id = l.friends 
group by b.b_name 
order by numOfFriends desc

Если у вас есть таблица друзей, таблица групп и таблица ссылок, у меня работает :)

0 голосов
/ 06 августа 2009

Читайте о COUNT и GROUP BY на mysql.org

Вы хотите что-то вроде этого (я не проверял):

SELECT bandId, COUNT(*) as fans FROM bandfriends
ORDER BY fans DESC
GROUP BY bandId
LIMIT 5;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...