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

Langage SQL Discussion :

Petit problème SQL (GROUP BY|ORDER BY)


Sujet :

Langage SQL

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 224
    Points : 201
    Points
    201
    Par défaut Petit problème SQL (GROUP BY|ORDER BY)
    Bonjour!

    Voilà, j'ai un tout petit problème au niveau du SQL (je suis sur MySQL)

    Considérons la table suivante :

    colonne "id" (increment) : 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 / 10
    colonne "group" (int)--> : 1 / 1 / 2 / 1 / 2 / 1 / 1 / 2 / 3 / 3

    J'aimerais récupérer l'id le plus grand de chaque regroupement par "group"

    En gros, dans ce cas j'aimerai obtenir :

    "group" => "id"
    1 => 7
    2 => 8
    3 => 10

    J'ai tenté quelques requètes avec des group by et order by, mais je me retrouve constament avec le premier id qu'il trouve, soit le plus petit...

    Si vous pouviez m'aider, ce serait avec plaisir!

    Merci!

  2. #2
    J1
    J1 est déconnecté
    Membre averti Avatar de J1
    Inscrit en
    Mai 2004
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 321
    Points : 333
    Points
    333
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [group], MAX(id)
    FROM MaTable
    GROUP BY [group]
    Non ?

    PS : comme tu utilises un mot réservé du langage SQL comme nom de colonne (group), il est possible que tu aies à employer une syntaxe particulière quand tu fais appel à cette colonne. En fonction de ton SGBD, tu peux avoir besoin de mettre son nom entre crochets (comme je l'ai fait) ou entre guillemets par exemple. Je te laisse consulter la doc' de MySQL pour trouver la syntaxe correspondante.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 224
    Points : 201
    Points
    201
    Par défaut
    Salut!

    Oui, en effet, c'est ce que je voulais, mais j'ai essayé de synthétisé mon problème, et du coup, quand j'adapte à ce que je veux réellement, ca ne marche plus...

    En fait, je séléctionne d'autres colonnes, tel que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [GROUP], MAX(id), exemple
    FROM MaTable
    GROUP BY [GROUP]
    Voilà, j'aimerai récupérer la colonne exemple correspondant aux max id du groupe, si vous voyez ce que je veux dire...

    Merci encore!

    (désolé pour le nom de la colonne GROUP, j'aurai du prendre un autre exemple!)

  4. #4
    J1
    J1 est déconnecté
    Membre averti Avatar de J1
    Inscrit en
    Mai 2004
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 321
    Points : 333
    Points
    333
    Par défaut
    Bonsoir,

    si je te comprends bien, tu voudrais, pour le jeu de données suivant...

    colonne "id" (increment): 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9 / 10
    colonne "group" (int)-->: 1 / 1 / 2 / 1 / 2 / 1 / 1 / 2 / 3 / 3
    colonne "exemple" (str) : H / J / G / F / I / D / E / C / B / A

    ... récupérer :

    Group => MaxId => ExempleCorrespondantAuMaxId
    1 => 7 => E
    2 => 8 => C
    3 => 10 => A

    Dans ce cas, tu peux essayer cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT [Group],
           MaxId,
           (SELECT Exemple
            FROM   MaTable
            WHERE  id = MaTable1.MaxId) AS ExempleCorrespondantAuMaxId
    FROM   (SELECT   [Group],
                     MAX(id) AS MaxId
            FROM     MaTable
            GROUP BY [Group]) AS MaTable1
    Attention, si je ne me trompe pas, les sous-requêtes ne sont pas gérées par les versions de MySQL antérieures à la 4.1.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 224
    Points : 201
    Points
    201
    Par défaut
    Oui, en effet, tu as compris ce que je recherchai

    Mon serveur MySQL est supérieur à 4.1, donc de ce côté là, ça devrait aller!

    Je ne peux pas tester la requète maintenant, faute de temps, mais je le ferai demain, de toute façon, j'ai confiance!

    Merci beaucoup!

    Je repasserai tout de même confirmer si tout marche comme il faut, et si je n'ai pas de nouveaux problèmes!

Discussions similaires

  1. Petit problème SQL
    Par Yooo84 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 30/01/2014, 17h56
  2. Petit problème SQL
    Par kisama dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/08/2012, 21h15
  3. Petit problème SQL
    Par Mushi dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/04/2008, 16h50
  4. Petit problème sql très embetant
    Par FataL_KilleR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/07/2007, 12h35
  5. [Access] Requète SQL Group By, Order By and Co
    Par zoidy dans le forum Langage SQL
    Réponses: 4
    Dernier message: 09/06/2006, 15h37

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