2013-10-02 2 views
1

에서 나는 다음과 같은 테이블 users 있습니다선택 그룹에 의해 동일한 테이블

id user refid 
1 a null 
2 b 1 
3 c 1 
4 d 2 
5 f 3 

내가 REFID 및 각 사용자에 대한 각 REFID의 수에 의해 그룹화, 사용자를 선택해야합니다. 예를 들어,

id user count 
1  a  2 
2  b  1 
3  c  1 

이 내가 시도 것입니다 :

SELECT user, refid, count(*) cnt FROM `users` group by refid 

그러나,이 날 각 값에 대한 잘못된 사용자를 제공합니다. 각 값에 대해 올바른 사용자를 얻으려면 어떻게해야합니까?

+0

예상되는 출력이 이해가 안됩니다. 사용자 "a"는 refid "1", 사용자 "b"는 refid "2"등과 관련이 있습니까? yor 테이블에서 사용자 "a"는 refid가 "null"이고 사용자 "b"는 refid가 "1"입니다. 예상 한 결과에 표시되는 방식과 일치하는 이유는 무엇입니까? 성취하고자하는 바를 정확히 설명해 주시겠습니까? –

+0

@MikeBrant 나는 당신에게 동의합니다. 그러나, OP는 샘플 출력에서 ​​'refid'대신 'id'를 의미한다고 생각합니다. 그런 다음 영업 담당자가 사용자 당 추천 금액 (최소 한 개가있는 사용자의 경우)을 찾고 있으므로 이해가됩니다. –

+0

@MostyMostacho는 id에 대해 정확합니다. 편집을했습니다 – Smith

답변

1

REFID. 기본적으로 거기에 참여하지 못했습니다.

select u1.id, u1.user, count(u1.id) cnt from mlm_users u1 
join mlm_users u2 on u1.id = u2.refid 
group by u1.id, u1.user 

는 ID, 사용자와 (만 적어도 하나의 추천이있는 사람을위한) 그들 각각이 추천의 양을 반환합니다.

+0

도움을 주셔서 감사합니다 – Smith

+0

내가 추천을 가지고있는 사람들과 0을 가지고 있지 않은 사람들을 돌려 주길 원한다면 이걸 시도해보십시오. *, count (u1.id) cnt FROM mlm_users u1 왼쪽 조인 mlm_users u2 ON u1.id = u2.refid GROUP BY u1.id'. – Smith

1

당신은 사용자가 그룹에 필요 나는 이것이 당신이 찾고있는 것 같다

SELECT user, refid, count(*) cnt FROM `mlm_users` group by user,redid