Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/04/2011, 20h40   #1
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 190
Points : 32
Points : 32
Par défaut Retourner le total de chaque valeur

Bonjour à tous,

Je commence avec un exemple concret pour expliquer mon besoin.

J'ai une table qui contient les colonnes et les valeurs suivantes:

Code :
1
2
3
4
5
6
7
8
9
livre_id    score
1            2
1            4
1            4
1            4
4            5
4            3
4            3
...
Ce que j'aimerais afficher c'est le nombre de votes de chaque livre selon un score spécifique.

Ex: Livre ayant l'id 1 à été voté 1 fois avec un score de 2
et 3 fois avec un score de 4.
Le livre ayant l'id 4 à été voté 1 fois avec un score de 5, et 2 fois avec le score 3.


J'ai donc essayé quelque chose du genre:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
$sql="SELECT livre_id, AVG(score), count(livre_id),
			 (CASE 
                               WHEN score=1 THEN count(score=1) 
                                WHEN score=2 THEN count(score=2) 
                                WHEN score=3 THEN count(score=3) 
			 	WHEN score=4 THEN count(score=4) 
			 	WHEN score=5 THEN count(score=5) 
	         	END ) AS scoreTotal
 
			FROM livre_score
			GROUP BY livre_id ";
Mais je n'obtiens pas le bon résultat souhaité

Merci pour votre aide.
persia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 21h22   #2
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Je ne suis pas sûr de bien comprendre le besoin, mais s'il n'y a que 5 score pôssible et que tu veux le nombre de vote par score alors ceci devrait convenir :
Code :
1
2
3
4
5
6
7
8
SELECT livre_id, AVG(score), count(livre_id),
       sum (CASE WHEN score=1 THEN 1 end) AS score_1,
       sum (CASE WHEN score=2 THEN 1 end) AS score_2,
       sum (CASE WHEN score=3 THEN 1 end) AS score_3,
       sum (CASE WHEN score=4 THEN 1 end) AS score_4,
       sum (CASE WHEN score=5 THEN 1 end) AS score_5
  FROM livre_score
 GROUP BY livre_id
Sinon merci de fournir également le résultat excompté à partir de l'exemple donné.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 22h32   #3
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 190
Points : 32
Points : 32
Citation:
Envoyé par skuatamad Voir le message
Je ne suis pas sûr de bien comprendre le besoin,
Salut,

Le besoin est simple: j'aimerais connaitre le nombre de personnes qui ont voté 1,2,3,4,5 pour un livre spécifique. Et les scores vont de 1 à 5. C'est pour des fin de statistiques, car on est souvent amener à vouloir connaître ce type d'informations.

Citation:
Envoyé par skuatamad Voir le message
Sinon merci de fournir également le résultat excompté à partir de l'exemple donné.
L'exemple je l'ai affiché à la fin du code, le voici:

Livre ayant l'id 1 à été voté 1 fois avec un score de 2 et 3 fois avec un score de 4.
Le livre ayant l'id 4 à été voté 1 fois avec un score de 5, et 2 fois avec le score 3.
persia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 23h13   #4
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
As tu testé la requête proposée ? peut être pas encore...
Citation:
Envoyé par persia Voir le message
L'exemple je l'ai affiché à la fin du code, le voici:
Oui et j'ai essayé d'y répondre, mais si ça ne convient pas, il sera bon de préciser le résultat escompté sous forme de résultat SQL (à savoir le "tableau" de résultat en retour) afin de confirmer si le résultat est crédible "SQLment" parlant en terme d'affichage.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 03h02   #5
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 190
Points : 32
Points : 32
Citation:
Envoyé par skuatamad Voir le message
As tu testé la requête proposée ? peut être pas encore...

Oui et j'ai essayé d'y répondre, mais si ça ne convient pas, il sera bon de préciser le résultat escompté sous forme de résultat SQL (à savoir le "tableau" de résultat en retour) afin de confirmer si le résultat est crédible "SQLment" parlant en terme d'affichage.
Je vais tester le tout et je te reviens avec une réponse
persia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 03h27   #6
Nouveau Membre du Club
 
Inscription : décembre 2006
Messages : 190
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 190
Points : 32
Points : 32
Citation:
Envoyé par skuatamad Voir le message
As tu testé la requête proposée ? peut être pas encore...

Merci bien, c'est exactement le résultat attendu
persia est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h59.


 
 
 
 
Partenaires

Hébergement Web