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 :

Requête SELECT COUNT MAX


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Requête SELECT COUNT MAX
    Bonjour à tous,
    voici ma table
    Prenom | game_id | points
    Pierre | 1 | 45
    Tom | 1 | 22
    Jean | 1 | 44
    Pierre | 2 | 35
    Tom | 2 | 33
    Jean | 2 | 30

    Je n'arrive pas à créer un requête qui permet de savoir par exemple combien de fois Pierre a fait le meilleur score (dans mon exemple, il a eu 2 fois le meilleur score aux jeux).
    Je ne sais pas comment faire cette requete...
    MErci à tous de vos idées !

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Avec mysql il faut passer par une sous requête qui détermine d'abord le max de points par game_id :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     select t.prenom, count(*)
      from latable t
      join (select game_id, max(points) as max_point)
              from latable
             group by game_id) t2
        on t.game_id = t2.game_id and t.points = t2.max_point
     where t.prenom = 'pierre'
     group by t.prenom

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Impec, je viens de tester.... Ca marche !
    Merci beaucoup de ton aide !

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 445
    Points : 622
    Points
    622
    Par défaut
    Tu peux aussi sélectionner les lignes pour lesquelles personne n'a obtenu un meilleur score :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT t.prenom, count(*)
    FROM latable t
    WHERE t.prenom = 'pierre'
    AND NOT EXISTS 
    ( 
      SELECT 1 
      FROM latable t2
      WHERE t.game_id=t2.game_id
      AND t.points < t2.points
    )
    GROUP BY t.prenom
    PS:
    La requête de Skuatamad est probablement plus performante.

  5. #5
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci Fred pour ta réponse aussi Elle peut etre utile !
    juste une petite erreur de parenthèse de Skuatamad que nous devons enlever.

    SELECT t.prenom, count(*)
    FROM latable t
    JOIN (SELECT game_id, max(points) AS max_point)
    FROM latable
    GROUP BY game_id) t2
    ON t.game_id = t2.game_id AND t.points = t2.max_point
    WHERE t.prenom = 'pierre'
    GROUP BY t.prenom

    Merci beaucoup en tout cas

  6. #6
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Bonsoir, une dernière question s'il vous plait...
    en PHP, une fois que j'ai mis cette requete dans une variable $var
    comment je fais pour l'afficher après mon :
    $query = mysql_query($var);

    Merci

  7. #7
    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
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    $sql = "
    	SELECT t.prenom, count(*) AS nb
    	FROM latable t
    	INNER JOIN 
    	(
    		SELECT game_id, 
    			max(points) AS max_point
    		FROM latable
    		GROUP BY game_id
    	) t2
    		ON t.game_id = t2.game_id 
    		AND t.points = t2.max_point
    	WHERE t.prenom = 'pierre'
    	GROUP BY t.prenom
    ";
     
    $result = mysql_query($sql);
     
    if(mysql_num_rows($result) > 0)
    {
    	$row = mysql_fetch_array($result);
     
    	// ensuite tu traites les données retournées par la requête
    	$nb = $row['nb'];
    }
    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 !

Discussions similaires

  1. Résultat d'une requête SELECT COUNT
    Par Bktero dans le forum Bases de données
    Réponses: 1
    Dernier message: 17/10/2010, 13h01
  2. [AC-2003] Requête SELECT COUNT(*)
    Par Shankara dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 03/06/2009, 04h04
  3. Requête complexe : COUNT - MAX
    Par MikeV dans le forum Requêtes
    Réponses: 14
    Dernier message: 23/09/2008, 12h37
  4. Réponses: 21
    Dernier message: 03/08/2007, 12h19
  5. [Débutant] Requête SELECT avec max et sous-requête
    Par joefou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/07/2005, 14h28

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