Aide pour requete SQL

jibe_84 Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   -  
holybeer Messages postés 383 Date d'inscription   Statut Membre Dernière intervention   -
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

holybeer Messages postés 383 Date d'inscription   Statut Membre Dernière intervention   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
jibe_84 Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   1
 
Non ça ne marche pas.. il n'aime pas le
Select (*), max(num)


merci d'avoir essayer :-)
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   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
Melooo Messages postés 1405 Date d'inscription   Statut Membre Dernière intervention   84
 
Bonjour,
Select NAME, MAX( num )
FROM nom_table
group by NAME. 
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
holybeer Messages postés 383 Date d'inscription   Statut Membre Dernière intervention   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