2010-01-31 5 views
1

두 변수와 일치하는 행 수를 계산하려면 어떻게해야합니까? 라는 사용자PHP는 쿼리에 대한 일치 횟수를 계산합니다.

및 필드 :

나는라는 테이블이 이름을 & 추천

I라는 다른 테이블이 있습니다 의견

및 필드라고 불리는 : comment_username

이것은 특정 사용자가 참조한 주석 (테이블의 행)이 적어도 10 개인 소개의 수를 가져와야하는 상황입니다.

그래서 코드가이 조잡한 윤곽선과 같아야한다고 생각했습니다.

$username = 'bob'; 
$validrefferalcount = 0; 
function validreferrals($username){ 

    $referreduser = SQL select * from users where referral='$username'; 

    foreach ($referreduser) { 

    $numberofcomments = SQL count * from comments where comment_username ='$referreduser'; 
if ($numberofcomments >= 10){ 
$validreferralcount = $validreferralcount + 1; 
} 

    } 
return $validreferralcount; 
    } 

나는 ... 등, 나쁜 구문 읽기

감사합니다 죄송합니다.

+1

음 잘못된 구문입니까? –

+0

정확히 어떻게 최종 제품으로 보일지 정확히 알지 못하고 올바른 코드가 될 것이라고 생각하는 내용을 입력합니다. – jiexi

+0

$ referenceduser는 값 (사용자의 ID, 사용자의 사용자 이름)으로 무엇을 가지고 있습니까? –

답변

5

어떤이 쿼리에 대해 다음과 같습니다 대신 사과의, 어쩌면 당신이 해결해야

SELECT COUNT(*) FROM (
    SELECT username, COUNT(*) AS c_comments 
    FROM users 
     JOIN comments ON username = comment_username 
    WHERE referral = 'referral' 
    GROUP BY username 
) t 
WHERE t.c_comments > 10; 
+0

좋아 보인다, 첫 번째 tho를 시도 해봐 – jiexi

+0

"t"이 있어야합니다. 두 번째 줄부터 마지막 ​​줄까지? – jiexi

+0

@jjexi - 그렇습니다. t는 SELECT COUNT (*) FROM (*) 쿼리 결과입니다. –

3

귀하의 경우에는 JOIN을 사용해야합니다. 내 실제 게시물 개수 이후 같은 뭔가 (내가 제대로 이해한다면)

SELECT count(*) FROM users 
    RIGHT JOIN comments ON comments.comment_username = users.username 
    WHERE users.referral = '$username' 

당신은 찾을 수 있습니다 자세한 내용은 here

+1

닫기 : D, 나머지는 – jiexi

3

아직 의견을 허용하지 않는, 기독교 몇 가지 추가 대답.

개수에 대한 HAVING 절, ​​이렇게 일치하는> = 10 조건은 좋은 생각

+0

+1을 입력하고 제안 사항에 따라 내 게시물을 바꿀 수 있습니까? –

+1

그래, 그 이유는 내가 다른 답변 대신에 그것에 의견을 게시하고 싶습니다;) – tDo

+0

알 수없는 (구글)은 이미 전체 쿼리를 게시했습니다 –