2011-04-25 6 views
1

J'ai une table d'utilisateurs et une table de commentaires et je veux choisir parmi les utilisateurs les principaux utilisateurs qui ont la grande quantité de commentaires de la table et de l'ordre des commentaires les par nombre de commentairesutilisateurs top -> commentaires -> php

structure de la table

utilisateurs

id | username | password 

commentaires

id | text | author_username 
+4

La table des commentaires doit être jointe par 'author_userid' et non par' author_username'. Mauvais formulaire. – Dutchie432

+0

Assurez-vous également que vos colonnes 'id' sont des clés primaires afin qu'elles soient indexées pour faciliter les requêtes plus rapides. – Treffynnon

Répondre

0

My SQL est un peu rouillé, mais quelque chose comme cela devrait vous donner ce que vous cherchez (bien que je l'ai mentionné, l'ID utilisateur doit être le seul identifiant d'utilisateur dans la table comments.)

Select count(id), author_username from comments group by author_username 
+0

et comment puis-je afficher le nombre en PHP? – Allan

+0

Je travaille habituellement avec ODBC, donc je ne suis pas familier avec la syntaxe 'mysql'. Si vous ne savez pas lire un champ à partir d'une base de données, cela devrait être votre première question, plutôt que de savoir comment former les données. – Dutchie432

0
select u.username,count(c.comments) as total 
    from users as u 
    left join comments as c 
    on u.username = c.author_username 
    group by u.username 
    order by total desc 

Je voudrais modifier le champ de jointure comme suggéré par dutchie432. Ajoutez une clause limit afin d'avoir le nombre d'enregistrements souhaité.

3

Utilisez l'instruction MySQL suivante pour répertorier les utilisateurs avec le plus de commentaires. CommentCount vous indique le nombre de commentaires faits par un utilisateur particulier.

SELECT 
    users.username, 
    COUNT(comments.id) AS CommentCount 
FROM 
    users 
    INNER JOIN comments ON users.id = comments.author_userid 
GROUP BY 
    users.username 
ORDER BY 
    COUNT(comments.id) DESC 

S'il vous plaît noter que vous devrez changer author_userid en author_username premier!

+0

La clause supérieure n'existe pas sur mysql. –

+0

Vous avez bien raison! Je l'ai corrigé maintenant. Si vous souhaitez seulement connaître les 10 meilleurs utilisateurs, ajoutez simplement 'LIMIT 10' à votre requête MySQL. – Fabianius

+0

Vous êtes en ce moment! ;) –