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 :

Regrouper et trier


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 15
    Par défaut Regrouper et trier
    Bonjour à tous j'ai un petit soucis de conception sur une requête qui m'a paru évidente au début mais qui au final m’ennuie depuis un petit moment.

    Prenons pour exemple une table client avec ID,nom, prénom, age, score

    Je voudrais, afficher le meilleur score des clients du même âge.

    Voici mon ébauche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT MAX(Score),nom,prenom,age  FROM client Group BY nom,prenom,age

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT
       MAX(Score),
       age
    FROM
       client
    GROUP BY
       age

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 15
    Par défaut
    Merci bien, mais je veux justement récupérer le nom et le prénom.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 15
    Par défaut Précision
    bon je vais tenter de préciser un peu mieux.
    La Clause Group BY regroupe les enregistrements Permettant par exemple (dans mon exemple ci dessus) d'obtenir le score maximum des clients ayant le même âge(Dans le cas où seul le champ âge est présent dans le Group by).
    Or si j'ajoute d'autres champs dans mon Group By, le regroupement se feras aussi sur ces champs (Ce n'est pas ce que je veut ).
    Si j'ajoute les champs voulues dans le SELECT, Une erreur va survenir du fait que dans le plupart des SGBD Les champs présents dans le SELECT doivent apparaître dans le Group By (Ce n'est pas spécifié dans les normes SQL mais admis).
    Sauf si je fait une agrégation sur ces champs (MIN,MAX ect....) or ce n'est toujours pas ce que je veux.
    Je demande donc comment faire pour obtenir la requête répondant à cette contrainte,

    Les noms, et prénoms des clients ayant eu le meilleur score dans leurs catégorie d'âge(Même âge).

    Merci beaucoup.

  5. #5
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Tu peux regarder cette source :
    http://mysql.developpez.com/telechar...aque-categorie

    En l'adaptant un peu à tes besoins, elle devrait faire ce que tu veux.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 15
    Par défaut
    La solution proposée est donc dans un premier temps Récupérer tous les âges différents et ensuite pour chaque âge récupérer le maximum des scores (c'est une solution à la qu'elle j'ai déjà pensé mais qui au final ne me parait pas si absurde que ça) je vais opter pour celle-là donc.
    Merci beaucoup pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-MAC 2011] Comment regrouper et trier des données en même temps ?
    Par pamplelune67 dans le forum Excel
    Réponses: 3
    Dernier message: 08/07/2014, 14h25
  2. [XL-2007] trier et regrouper sur les lignes comme sur les colonnes
    Par pascual dans le forum Conception
    Réponses: 1
    Dernier message: 13/07/2012, 18h00
  3. Réponses: 2
    Dernier message: 07/01/2012, 12h43
  4. Réponses: 3
    Dernier message: 07/10/2009, 19h23
  5. Réponses: 1
    Dernier message: 02/12/2005, 23h08

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