Aide pour requete SQL

jibe_84 Messages postés 63 Statut Membre -  
holybeer Messages postés 437 Statut Membre -
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. holybeer Messages postés 437 Statut Membre 65
     
    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
  2. jibe_84 Messages postés 63 Statut Membre 1
     
    Non ça ne marche pas.. il n'aime pas le
    Select (*), max(num)


    merci d'avoir essayer :-)
    0
  3. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    Ç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
  4. Melooo Messages postés 1476 Statut Membre 84
     
    Bonjour,
    Select NAME, MAX( num )
    FROM nom_table
    group by NAME. 
    
    -1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. holybeer Messages postés 437 Statut Membre 65
     
    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