tags:

views:

326

answers:

3

Using PHP and MySQL, I want to query a table of postings my users have made to find the person who has posted the most entries.

What would be the correct query for this?

Sample table structure:

[id] [UserID]
1     johnnietheblack
2     johnnietheblack
3     dannyrottenegg
4     marywhite
5     marywhite
6     johnnietheblack

I would like to see that "johnnietheblack" is the top poster, "marywhite" is second to best, and "dannyrottenegg" has the least

+1  A: 

I believe this should work...

SELECT user_id, COUNT(*) FROM postings ORDER BY COUNT(*) GROUP BY user_id LIMIT 1
ceejayoz
+7  A: 

Something like:

SELECT COUNT(*) AS `Rows`, UserID
FROM `postings`
GROUP BY UserID
ORDER BY `Rows` DESC
LIMIT 1

This gets the number of rows posted by a particular ID, then sorts though the count to find the highest value, outputting it, and the ID of the person. You'll need to replace the 'UserID' and 'postings' with the appropriate column and field though.

Alister Bulman
A: 

Assuming posting is a tuple (user_id, recipient_user_id), where each row represents one posting, from user_id to recipient_user_id:

select user_id, count(*) as posts 
from postings
group by user_id
having count(*) = max(count(*)) ;
tpdi