Résultats SUM et GROUP BY incorrect

Résolu
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

  1. Contributeur
    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. Punaiiiiiise ! COUNT !!!!
      Merci beaucoup yg_be, j'étais tellement épuisé que je ne faisais que des conneries...
  2. Contributeur
    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. 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;}
      
  3. Contributeur
    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.
    1. 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;}