2010-01-31 7 views
1

Comment calculer le nombre de lignes correspondant à deux variables?PHP SQL compte le nombre de correspondances pour la requête

J'ai une table appelée: utilisateurs

et champs appelés: nom d'utilisateur & référence

J'ai une autre table appelée: commentaires

et champs appelés: comment_username

C'est la situation, j'ai besoin d'aller chercher le nombre de références avec au moins 10 commentaires (lignes dans la table des commentaires) qu'un utilisateur spécifique a référé.

Donc je pensais que le code devrait être quelque chose comme ce contour brut.

$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; 
    } 

mes excuses pour la mauvaise syntaxe, etc ...

Merci pour la lecture.

+1

Eh bien, au lieu de présenter des excuses, peut-être vous devriez fixer le mauvaise syntaxe? –

+0

Je ne sais pas exactement comment cela va ressembler à un produit final et je suis en train de taper ce que je crois serait le quel code correct. – jiexi

+0

Qu'est-ce que $ referenceduser a comme valeur (l'ID de l'utilisateur, le nom d'utilisateur de l'utilisateur)? –

Répondre

5

Qu'en est cette requête:

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

semble bon, dois l'essayer d'abord tho – jiexi

+0

est le "t" censé être là dans l'avant-dernière ligne? – jiexi

+0

@jjexi - Oui c'est censé être. t est le résultat de la requête SELECT COUNT (*) FROM (*) –

3

Vous devez utiliser JOIN dans votre cas. Quelque chose comme (si je comprends bien)

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

Vous pouvez trouver plus d'informations here

+1

assez proche: D, je vais remplir le reste – jiexi

3

Depuis mon compteur de messages réelle ne permet pas encore de commentaires, quelques ajouts à répondre à des chrétiens.

Une clause having contre le comte, de sorte que le> = 10 condition est adaptée serait une bonne idée

+0

+1 et puis-je changer mon poste selon votre suggestion? –

+1

Bien sûr, c'est pourquoi je l'espère pour poster un commentaire sur elle au lieu d'une autre réponse;) – tDo

+0

inconnu (google) a déjà posté la requête complète –

Questions connexes