Aide pour requete SQL
jibe_84
Messages postés
63
Statut
Membre
-
holybeer Messages postés 437 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!
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
-
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. -
Non ça ne marche pas.. il n'aime pas le
Select (*), max(num)
merci d'avoir essayer :-) -
Ç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 -
Bonjour,
Select NAME, MAX( num ) FROM nom_table group by NAME.
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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.