2 votes

Requête MySQL ordonnée par nombre de lignes ?

J'ai une table mysql pour les votes. Il y a un id, un project_id et un champ vote (qui vaut 1 si un projet spécifique est voté). Maintenant je veux générer un classement à partir de ces entrées. Existe-t-il un moyen d'obtenir le nombre de votes pour chaque project_id et de trier automatiquement les entrées par le nombre de votes TRUE d'un projet avec une seule requête mysql ? Ou connaissez-vous une manière en php ?

par exemple

ID | Project ID | Vote
-----------------------
1  | 2          | 1
2  | 2          | 1
3  | 1          | 1

\==>

Projet N° 2 a 2 votes

Projet N° 1 a 1 vote

Merci d'avance !

5voto

plod Points 485
SÉLECTIONNER 
   `project_id`, SUM(`vote`) AS vote_count 
DEPUIS 
   `nom_table` 
GROUPE PAR `project_id`
ORDRE PAR vote_count DESC

l'aliasing de SUM vous aidera à trouver la colonne en php plus tard si vous la récupérez sous forme de tableau associatif

3voto

Peter Lang Points 25877
Sélectionnez project_id, Sum( vote ) project_vote 
À partir de votes 
Group Par project_id 
Commandez Par project_vote Desc 

GROUPE PAR vous permet d'obtenir la somme des votes par project_id, l'ORDER BY DESC met les votes les plus élevés en premier.

0voto

Felix Kling Points 247451

Utilisez GROUP BY:

SELECT project_id, SUM(vote) as votes 
FROM table 
GROUP BY project_id 
ORDER BY votes DESC

0voto

KM. Points 51800

Essayer ceci :

SELECT 
    ProjectID,SUM(Vote) 
    FROM VotreTable 
    GROUP BY ProjectID 
    ORDER BY Sum(Vote) DESC

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X