2010-03-17 2 views
1

내가 users 테이블을 가지고 있고 나는 게시물 의 숫자로 게시물의 큰 금액을 상부 사용자 posts 테이블을 위해 그들로부터 users에서 선택합니다 posts 표는 내가 의해 array_count_values()하여 만들 수 있습니다 내가 더 나은mysql을 선택 최고 사용자 문제

테이블 구조

posts 

ID가됩니다 내가 왼쪽으로 한 MySQL의 쿼리를 만들 경우 지금 내가 생각하는 주문에 가입하지 못할 | 나는 그것을이 alt text http://img511.imageshack.us/img511/6707/31154352.gif 화살표를 볼 나에게 준이

SELECT COUNT(1) cnt, u.user_id 
FROM users u 
LEFT JOIN posts p 
ON p.author_id=u.user_id 
GROUP BY u.user_id 
ORDER BY cnt DESC 
LIMIT 20 

을 시도

auther_id 무엇이 난 그냥이 첫 번째 행

+1

테이블이 무엇처럼 보이나요 사실을 사용 – Luiscencio

답변

5
무엇 USER_ID 5 에서 2 개 게시물이

GROUP BY u.user_id를 사용하여 사용자별로 게시물을 집계하고 게시물 수에 대한 COUNT 값을 얻은 다음 해당 숫자로 ORDER BY를 계산해야합니다. N 내림차순 :

SELECT COUNT(1) cnt, u.user_id 
FROM users u 
LEFT JOIN posts p 
ON p.author_id=u.user_id 
GROUP BY u.user_id 
ORDER BY cnt DESC 
LIMIT 20 
+0

난 그게 내게 사용자와 게시물의 수를 줄 오류가 있다고 생각합니다 –

+1

당신은 그것에 의해 정렬하는 게시물의 개수를 포함해야합니다. 각 사용자의 게시물 수를 원하지 않습니까? – Andy

+0

그것은 상위 20 명의 사용자와 그 user_id에 대한 게시물 수를 제공합니다. – txwikinger

2
SELECT u.user_id, COUNT(*) as post_count 
FROM users u 
INNER JOIN posts p 
USING (user_id) 
GROUP BY u.user_id 
ORDER BY post_count 
0

내가이 그 일을 이

SELECT COUNT(1) cnt, a.auther_id 
FROM `posts` a 
LEFT JOIN users u ON a.auther_id = u.id 
GROUP BY a.auther_id 
ORDER BY cnt DESC 
LIMIT 20