2012-01-28 4 views
0

다음과 같은 표가 있습니다.MySQL에서 사용자의 메시지를 어떻게 계산합니까?

메시지

message_id 
parent_id 
forum_id 
user_id 

사용자

user_id 
username 
pass 

어떻게 사용자를 조회하고, 사용자 이름과 그들의 메시지의 수를 표시하려면?

내 쿼리 :

select count(subject), user_id from messages group by user_id;

문제는이 메시지 만하지만 이름의 USER_ID와 수를 표시한다는 것입니다. 사용자 이름을 표시하려면 어떻게합니까?

+0

내 업데이트 된 답변보기 및 작동 여부를 알려주세요 ... –

답변

0

나는 이것이 당신이 원하는 쿼리라고 생각한다.

$query = "SELECT u.username, COUNT(*) as total_count FROM messages m INNER JOIN users u ON m.user_id = u.user_id GROUP BY U.user_id" 

TOTAL_COUNT 여기서 사용자 이름은 동일한 접합 방지하는 사용자 ID에 의해 분류 된 메시지의 총 수를 제공한다.

+0

thats great !!!, thats actually 무엇을 찾고 있어요!, 완벽 .. 대단히 감사합니다 !! 이제 PHP MySQL을 훨씬 더 즐기고 있습니다. 일들은 훌륭합니다. 나를 도와 주는데 고마워요. 당신은 훌륭합니다! – Hokutosei

+0

듣기 좋습니다. :) – Sabari

4

당신은 귀하의 요청으로 사용자 테이블에 가입해야합니다 :

select count(*), username 
from messages, users 
where users.user_id = messages.user_id 
group by users.user_id; 
+0

이 오류가 발생해야한다고 생각합니다 ... –

+0

'messages.count (*), users.username'을 선택해야합니다. users.user_id;' –

+0

"암시 적 조인 절"을 사용하는 이유는 "where"가 더 이상 사용되지 않고 너무 명확하지 않기 때문입니다 ... 명시 적으로 테이블에 조인하는 것이 더 명확하고 표준적인 방법이라고 생각합니다. – DonCallisto

2
SELECT username, COUNT(*) FROM messages M 
JOIN users U USING (user_id) 
GROUP BY U.user_id 

이 두 개의 서로 다른 USER_ID는 사용자 테이블에서 동일한 사용자 이름이 시나리오의 처리합니다. 또한이 쿼리는 MySQL과 관련이 있으며 다른 RDBMS에서 작동하지 않을 수 있습니다.

+0

'user_id'로 그룹화 할 수 있지만 선택 목록의 집계가 아닌 값으로 그룹화하는 것이 더 일반적입니다. 표준 SQL과 대부분의 SQL DBMS에서는'username'이 GROUP BY 절에 나타나야합니다. –

+0

@JonathanLeffler 당신 말이 맞습니다. 그러나 MySQL은이를 허용해야합니다. 또한 두 개의 서로 다른 user_id가 users 테이블에서 동일한 사용자 이름을 갖는 경우를 구분하려고했습니다. –

+0

WOOOWWW !!!! 그게 !!!! 나는 병이 내 눈에서 눈물을 흘린다고 생각합니다. 농담 ... 와우, MySQL은 멋지다 !! 도와 주셔서 대단히 감사합니다 !! 나는 PHP MySQL에 대해 더 배워야한다고 생각한다 !! 다시 감사합니다!! – Hokutosei

0

아래에서 사용하십시오. 나는 그것이 효과가있을 것이라고 믿는다.

SELECT messages.user_id, users.username, count(*) 
FROM messages, users 
WHERE messages.user_id = users.user_id 

행운을 빌어 요 !!!

+0

count (*)를 사용하면 GROUP BY 문을 사용할 필요가 없습니다. –

+0

"count (*)를 사용할 때 GROUP BY Statement_를 사용할 필요가 없습니다.": MySQL에서만 가능합니다 - 어쩌면. 다른 SQL DBMS에는 GROUP BY 절이 필요합니다. –

+0

내 쿼리를 확인하고 작동하는지 여부를 알려주시겠습니까 ?? 나는 여기에 mysql이 없다 ... –

관련 문제