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 -
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!
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!
A voir également:
- Aide pour requete SQL
- Logiciel sql - Télécharger - Bases de données
- Sql lister les tables ✓ - Forum Programmation
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Java
- Requête bloquée par le pare-feu applicatif claranet webfence ✓ - Forum Réseaux sociaux
- Jointure sql ✓ - Forum MySQL
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.
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.
Ç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
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
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.
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.