Résultats SUM et GROUP BY incorrect
Résolu
Sinistrus
Messages postés
1010
Date d'inscription
Statut
Membre
Dernière intervention
-
Sinistrus Messages postés 1010 Date d'inscription Statut Membre Dernière intervention -
Sinistrus Messages postés 1010 Date d'inscription Statut Membre Dernière intervention -
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 ?
Dans ma table, j'ai 2 enregistrements identiques :
Le résultat est :
Olivier : 3
Manguier : 1
Alors que je souhaite avoir :
Olivier : 2
Manguier : 1
Pouvez-vous m'aider svp ?
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 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
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
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
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.-
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;}
-
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
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.-
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;}
-