Résultats SUM et GROUP BY incorrect

Résolu/Fermé
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - Modifié le 22 juin 2017 à 20:40
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 23 juin 2017 à 14:36
Bonsoir à tous !

Besoin d'aide en PHP, la fonction SUM et GROUP BY ne me donne pas un bon résultat pouvez-vous m'aider svp ?

$ref_je = $pdo->query("SELECT SUM(Winner) AS Winn, SUM(Participation) AS Part, Reponse FROM ma_table WHERE Pseudo='".$Pseudo."' GROUP BY Reponse");
while($data_je = $ref_je->fetch(PDO::FETCH_ASSOC)){
$Jeu_W = number_format($data_je["Winn"], 0, ',', ' ');
$Jeu_P = number_format($data_je["Part"], 0, ',', ' ');
}

Dans ma table, j'ai 2 enregistrements identiques :

Pseudo   | Winner | Participation | Reponse    |
------------------------------------------------
Olivier | | 1 | Left |
Olivier | | 1 | Left |
Olivier | | 1 | Right |
Manguier | | 1 | Right |

Le résultat est :
Olivier : 3
Manguier : 1

Alors que je souhaite avoir :
Olivier : 2
Manguier : 1

Pouvez-vous m'aider svp ?

3 réponses

yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
23 juin 2017 à 07:57
Je suggère:
SELECT count (distinct Reponse) as Part FROM ma_table WHERE Pseudo='".$Pseudo."' 

Si tu veux vérifier que cela te donne le résultat attendu, tu peux tester ceci en direct sur ta base:
SELECT Pseudo, count (distinct Reponse) as Part FROM ma_table GROUP BY Pseudo
1
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
23 juin 2017 à 14:36
Punaiiiiiise ! COUNT !!!!
Merci beaucoup yg_be, j'étais tellement épuisé que je ne faisais que des conneries...
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
22 juin 2017 à 21:12
bonsoir, si tu veux être aidé, je te suggère:
1) d'expliquer ce que tu cherches à obtenir, pourquoi tu souhaites 2 pour olivier.
2) de nous montrer l'ensemble de ton code, pas juste un petit bout insignifiant.
0
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
22 juin 2017 à 21:58
1) Je dois cumuler le nombre de fois qu'un membre a participé en tenant compte des réponses "uniques".
Si Olivier (comme dans le tableau à participé 3 fois avec la même réponse, c'est compté 1, voilà pourquoi SUM() GROUP BY Reponse.

2) Voici tout mon code :
$Total= NULL;
$Stats = $pdo->query("SELECT SUM(Points) AS Total FROM ".$TB_USER_POINTS." WHERE Pseudo = '".$Pseudo."'");
while($datas = $Stats->fetch(PDO::FETCH_ASSOC)){
$Total = number_format($datas["Total"], 0, ',', ' ');
}

if($Total == NULL) {echo "0";} else {echo $Total;}
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
22 juin 2017 à 22:07
quelques réflexions:
1° le code que tu montres en #2 n'a rien à voir avec celui que tu comptes dans ta question: que se passe-t-il?
2° le code que tu montres en #2 ne va pas afficher le résultat que tu montres dans ta question: essaies-tu de nous embrouiller?
3° contrairement à ce que tu écris en #2, Olivier n'a pas participé trois fois avec la même réponse: as-tu bien regardé ton exemple?
je te suggère de commencer par des exercices plus simples en SQL, et de faire du PHP ensuite.
0
Sinistrus Messages postés 1017 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
23 juin 2017 à 02:36
Veuille me pardonner, je me suis trompé de code:
$ref_je = $pdo->query("SELECT SUM(Winner) AS Winn, SUM(Participation) AS Part, Reponse FROM ma_table WHERE Pseudo='".$Pseudo."' GROUP BY Reponse");
while($data_je = $ref_je->fetch(PDO::FETCH_ASSOC)){
$Jeu_P = number_format($data_je["Part"], 0, ',', ' ');
}

if($Jeu_P== NULL) {echo "0";} else {echo $Jeu_P;}
0