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.
    1. Non ça ne marche pas.. il n'aime pas le
      Select (*), max(num)


      merci d'avoir essayer :-)
      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
        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.