IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

problème count et group by


Sujet :

Requêtes MySQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut problème count et group by
    Bonjour,
    Je n'arrive pas à calculer un pourcentage avec un group by.
    A propos du poker, j'aimerais calculer pour chaque joueur, le pourcentage de mains jouées sur le nombre total où il a relancé ('raise') au tour preflop.
    Mes tables sont: Action(IDAction,IDJoueur,IDTour,TypeAction,Montant), Participe(IDJoueur,IDMain,Position,Gagnant), j'ai crée une vue _nbmainsjouees qui calcule pour chaque joueur le nombre de mains totales qu'il a participé.

    Voila ce que j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE VIEW _PFR AS
         SELECT _nbmainsjouees.IDJoueur, IFNULL(COUNT(DISTINCT P.IDMain)/nbmainsjouees,0) as pourcentage_raise_au_preflop
         FROM Participe as P, _nbmainsjouees
         WHERE P.IDMain IN   (SELECT P.IDMain
                     FROM participe AS P, action AS A
                     WHERE A.IDTour = 1
                     AND TypeAction = 'raise' )
       GROUP BY _nbmainsjouees.IDJoueur

    Je ne sais pas si ça vaut quelque chose mais en tout cas il ne me renvoie aucun enregistrement alors que j'aimerai obtenir pour chaque joueur un pourcentage, meme s'il est égal à 0.

    Ca serait vraiment simpa si quelqu'un pouvait m'éclairer!

    olivt0603,

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Apparemment, tu ne connais pas les jointures !
    Quelle est la structure de la vue _nbmainsjouees ? Ou même carrément son code parce qu'il y a peut-être moyen d'optimiser l'ensemble.

    J'ai aussi du mal à voir ce qui relie précisément Action et Participe.
    On pourrait faire cette jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FROM Participe AS P
    INNER JOIN action AS A ON A.IDJoueur = P.IDJOUEUR
    Mais j'ai l'impression qu'il y aura toutes les actions d'un joueur et pas seulement celles de la main considérée. A moins que P.IDMain trouve son équivalent dans A.IDTour ? Auquel cas, pourquoi avoir changé de nom d'une table à l'autre ?

    Ta requête pourrait donner quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT _nbmainsjouees.IDJoueur, 
      COALESCE(COUNT(DISTINCT P.IDMain) / m.nbmainsjouees, 0) AS pourcentage_raise_au_preflop
    FROM Participe AS P
    LEFT OUTER JOIN action AS A ON A.IDJoueur = P.IDJoueur
    LEFT OUTER JOIN _nbmainsjouees AS m ON m.IDJoueur = P.IDJoueur
    WHERE A.IDTour = 1
      AND A.TypeAction = 'raise'
    GROUP BY _nbmainsjouees.IDJoueur
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse rapide!
    Effectivement j'ai du mal à gerer les jointures.
    Ta requête ne me renvoie toujours rien. Ce que j'aimerais c'est que ça affiche le pourcentage pour chaque joueur, meme s'il est nul.

    Voici le code de ma vue:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE VIEW _nbmainsjouees AS
                                SELECT IDJoueur, COUNT(DISTINCT IDMain) as nbmainsjouees
                                FROM participe
                                GROUP BY IDJoueur
    IDTour est juste l'ID du tour où on est: 1 pour preflop, 2 pour flop,... dans une main.
    IDMain c'est le numero de la main dans une partie.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    En fait le problème je pense, c'est que je voudrais avoir tous les joueurs dans mon résultat qu'ils respectent ou pas la condition, c'est pour ça que j'ai essayé de faire une requete imbriquée.

Discussions similaires

  1. Problème de COUNT et GROUP BY
    Par Catalyst dans le forum Requêtes
    Réponses: 6
    Dernier message: 19/06/2012, 13h34
  2. Réponses: 8
    Dernier message: 09/01/2012, 09h45
  3. Problème count Join group by
    Par casa_sniper dans le forum PL/SQL
    Réponses: 5
    Dernier message: 08/12/2011, 12h21
  4. Réponses: 3
    Dernier message: 09/10/2007, 16h36
  5. problème count et group by
    Par zulkifli dans le forum Requêtes
    Réponses: 3
    Dernier message: 24/11/2006, 04h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo