0 votes

SQL - Comment utiliser SUM et MAX dans la même requête ?

Je travaille avec une base de données MySQL version 5.0.41 (et PHP 5.2.6, bien que cela ne soit peut-être pas pertinent pour cette question).

J'ai un tableau appelé votes avec les champs suivants : id , item_id , vote_value . Chaque fois qu'un utilisateur du site soumet un vote positif pour un élément, une nouvelle ligne est créée avec l'élément correspondant. item_id et un nombre positif (c'est-à-dire 1). Lorsque le vote est négatif, une ligne est créée avec la valeur correspondante de item_id et un nombre négatif (c'est-à-dire -1). J'aimerais sélectionner, avec une seule requête (si possible), l'identifiant de l'article qui a le plus de votes. Pour ce faire, je dois d'abord faire la somme de tous les votes pour chaque individu item_id (pour obtenir un nombre comme 38 ou -14), puis sélectionnez le maximum pour ce nombre. Je ne suis pas sûr de savoir comment écrire la requête pour cela.

Pouvez-vous nous aider ?

Merci de votre attention !

3voto

Zed Points 27408
SELECT item_id, SUM(vote_value) AS sum
FROM votes
GROUP BY item_id
ORDER BY sum DESC
LIMIT 1

1voto

VoteyDisciple Points 23229

Vous pourriez faire quelque chose comme :

SELECT item_id, SUM(vote_value) AS total, COUNT(id) AS c
FROM votes
GROUP BY item_id
ORDER BY total DESC, c DESC
LIMIT 1

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