Aide pour requete SQL

Bonjour,

Je voudrai créer une requete pour garder que les max de num pour chaque name

ID - NAME - NUM
1 - LAPIN - 14
2 - POULE - 22
3 - LAPIN - 5
4 - POULE - 42
5 - POULE - 12
6 - POULE - 2
7 - FLEUR - 22

et avoir

1 - LAPIN - 14
4 - POULE - 42
7 - FLEUR - 22

merci!

5 réponses

  1. Select (*), max ( num )
    FROM nom_table
    group by NAME.

    Je peux me gourer. Ca fait longtemps que j'ai pas fais de SQL. Essaye de voir ce que ça donne et dis moi.
    0
    1. Non ça ne marche pas.. il n'aime pas le
      Select (*), max(num)


      merci d'avoir essayer :-)
      0
      1. Ça dépend de ton SGBD...

        Sous SQL server, tu ne pourras pas avoir de solution en une seule requête.
        Au mieux, tu peux avoir ça :
        SELECT NAME, MAX(NUM) FROM table GROUP BY NAME

        Ou alors, il faut utiliser une sous requête :
        SELECT t1.ID, t1.NAME, t1.NUM FROM table t1 WHERE
        NUM = (SELECT MAX(NUM) FROM table t2 WHERE t2.NAME = t1.NAME)

        Sous MySQL, tu peux faire un truc comme ça :
        SELECT ID, NAME, MAX(NUM) FROM table GROUP BY NAME

        Xavier
        0
        1. Bonjour,
          Select NAME, MAX( num )
          FROM nom_table
          group by NAME. 
          
          -1
          1. essaye alors

            Select id, name, num, max( num ) as sum
            from nom_de_la_table
            group by id;

            Voici ce que j'ai trouvé dans l'aide MySQL

            Dans les versions 3.22.5 et supérieures de MySQL, vous pouvez aussi écrire des requêtes ainsi :

            mysql> SELECT user,MAX(salary) FROM users
            -> GROUP BY user HAVING MAX(salary)>10;
            Dans des versions plus anciennes de MySQL, vous pouvez écrire à la place :

            mysql> SELECT user,MAX(salary) AS sum FROM users
            -> group by user HAVING sum>10;
            La clause HAVING peut utiliser des fonctions d'agrégation, alors que la clause WHERE ne le peut pas :

            mysql> SELECT user, MAX(salary) FROM users
            -> GROUP BY user HAVING MAX(salary)>10;
            Cependant, cela ne fonctionne pas dans les anciennes versions du serveur MySQL, : avant la version 3.22.5. Au lieu de cela, ajoutez un alias de colonne dans la liste de colonnes, et faites référence à cet alias dans la colonne HAVING :

            mysql> SELECT user, MAX(salary) AS max_salary FROM users
            -> GROUP BY user HAVING max_salary>10;

            Donc ma requête est bonne je pense.
            -1