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 :

Tri sur table


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut Tri sur table
    * Bonjour, *

    Soit une table avec deux champs nom et n

    toto 4
    tata 8
    toto 6
    toto 1

    Je veux lister en alpha les noms et afficher la plus grande valeur de n pour ce nom.
    Il me faut donc obtenir
    tata 8
    toto 6

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM tab GROUP BY nom
    me rend hélas
    tata 8
    toto 4

    * Merci *

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Bonjour,

    le résultat est normal sur MySQL,

    La clause GROUP BY permet de faire un regroupement selon N colonnes (dans votre cas la colonne nom). Seulement si vous ne spécifiez pas de fonction de groupement (MIN, MAX, AVG, ...) sur la/les colonne(s) restante(s) (n dans votre cas) que doit afficher votre SGBDR ?

    MySQL a pris le partit d'afficher une valeur aléatoire contenu dans le regroupement, tandis que les autres (Oracle database, Postgres, SQL server) eux renvoi une erreurs d’ambiguïté de valeur a afficher.

    Donc pour votre requête étant donnée que vous souhaitez n'afficher que la valeur max de chaque groupe de nom il vous suffit d'appliquer la fonction MAX() à la colonne n.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nom, MAX(n)
    FROM tab
    GROUP BY nom
    N'oubliez pas que si vous utilisez la clause GROUP BY il faut que toutes les colonnes n'appartenant pas à la clause GROUP BY mais qui figure dans le SELECT doivent êtres soumise à une fonction de regroupement.
    une réponse vous a permis d'avancer ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut
    Merci pour votre réponse.

    Une dernière chose :
    Comment puis-je trier le résultat de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM tab GROUP BY nom
    sur la colonne MAX(n) ?

    (Car je ne peut pas faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM tab GROUP BY nom ORDER BY MAX(n)

  4. #4
    Membre du Club
    Homme Profil pro
    Reverse Engineering
    Inscrit en
    Juin 2013
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Reverse Engineering

    Informations forums :
    Inscription : Juin 2013
    Messages : 31
    Points : 40
    Points
    40
    Par défaut
    Salut,

    tu peux très bien faire ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT nom, MAX(n)
    FROM tab
    GROUP BY nom
    ORDER BY MAX(n)
    --------------------------------------------
    Si un commentaire t'as aidé pense à mettre un
    Si un commentaire t'a aidé pense à mettre un

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

Discussions similaires

  1. [WD17] tri sur table fichier par programmation
    Par hadaf dans le forum WinDev
    Réponses: 1
    Dernier message: 12/10/2012, 14h34
  2. Tri sur table / group By
    Par sidacoq dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/04/2010, 19h31
  3. Tri sur table mauvais
    Par Julien59 dans le forum SQL
    Réponses: 3
    Dernier message: 21/05/2008, 11h30
  4. Tri sur table access très long
    Par nathalie.de dans le forum Access
    Réponses: 6
    Dernier message: 15/09/2007, 11h10
  5. URGENT: tri sur table SQL
    Par clairette dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/05/2005, 14h53

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