2011-07-03 2 views
0

나는 포럼이 있습니다. 나는 대부분의 블로그 제출물을 가진 사용자를 얻을 수 있도록 SQL 쿼리를 수행하려고합니다. 두 테이블, blogsusers 있습니다.ID로 가장 많은 것을 얻으십시오

blogs 테이블은 테이블에서 user_idauthor_id입니다.

SELECT b.author_id FROM blogs b 
INNER JOIN users u ON b.author_id = u.user_id 
ORDER BY count(author_id) DESC 
GROUP BY b.author_id 
LIMIT 0,10; 

당신은 대부분의 블로그 제출하여 사용자를 찾기 위해 좀 도와 주 시겠어요, 또는 다른 말로, 내가 가진 author_id을 찾을 필요가 : 그래서 여기

은 내가하지만 성공하지하려고 것입니다 blogs 테이블에서 가장 많이 발생합니다. 감사!

+0

기본적으로 쿼리의 구문이 약간 잘못되었습니다. 모든 대답에서 볼 수있는 것처럼 GROUP BY는 ORDER BY보다 우선해야합니다. –

+0

이것은 머리카락을 나누는 것입니다. 알아요.하지만 포럼입니까, 아니면 블로그입니까? 두 개념은 매우 다릅니다. – Flimzy

+0

@Filmzy 당신이 내 사이트에 대해 물으면, 그것의 포럼. 블로그 대신에 나는 "주제"라는 단어를 사용 했어야 할 수도 있지만, 단지 선호하는 것입니다. – Nazar

답변

2

당신은 이것에 대한 users에 가입 할 필요가 없습니다, 당신은 단지 GROUP BY와 LIMIT 필요

SELECT author_id 
FROM blogs 
GROUP BY author_id 
ORDER BY COUNT(*) DESC 
LIMIT 1 

그룹이 그것을 계산해야 그룹 카운트가 이야기를; 이 경우 각각 author_id에 대한 블로그를 수집하여 단일 그룹으로 간주해야합니다.

+0

감사합니다. 이것이 효과가있는 것 같습니다. 우리에게는 5000 명이 넘는 사용자가 있습니다. 왜 내가 100 % 확실하지 않다고 말하고있는 것입니다. 하지만 올바른 것으로 보입니다. – Nazar

+0

@Nazar :'LIMIT'을 삭제하고'SELECT author_id, COUNT (*)'를 사용하여 모든 개수를 볼 수 있습니다. –

0
SELECT COUNT(a.*) AS total, a.author_id 
FROM blogs AS a 
GROUP BY author_id 
ORDER BY total DESC 
LIMIT 1 
0

검색어의 다른 부분의 순서가 잘못되었습니다. 이

SELECT b.author_id 
FROM blogs b 
INNER JOIN users u ON b.author_id = u.user_id 
GROUP BY b.author_id 
ORDER BY COUNT(b.author_id) DESC 
LIMIT 0 , 10 

SELECT Syntax에 대한 MySQL의 설명서를 참조하십시오 작동합니다.

또한, 다른 사람들이 지적했듯이이 경우에는 실제로 조인 할 필요가 없으므로 예제가 약간 단순화되었다고 가정합니다.

+0

그래, 내, 실제로 단순화됩니다. 나는 올바른 방법을 모르기 때문에 조인 테이블을 사용하려고했습니다. 충고에 감사하다! – Nazar

관련 문제