Erreur avec la fonction MAX()
Fermé
MainCore
-
Modifié par MainCore le 11/01/2014 à 14:04
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 - 11 janv. 2014 à 19:39
chico200987 Messages postés 791 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 30 juillet 2018 - 11 janv. 2014 à 19:39
A voir également:
- Erreur avec la fonction MAX()
- Réinitialiser kidicom max ✓ - Forum Tablette tactile
- Erreur 1004 vba ✓ - Forum VB / VBA
- Fonction si et - Guide
- Erreur 1000 france tv - Forum MacOS
- Edraw max - Télécharger - Présentation
2 réponses
chico200987
Messages postés
791
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
30 juillet 2018
144
11 janv. 2014 à 16:39
11 janv. 2014 à 16:39
Salut,
Un moyen de résoudre ton problème est de passer par une requête imbriquée de ce type :
SELECT numPilote, salaire FROM pilote
WHERE salaire = (SELECT max(salaire) FROM pilote)
Un moyen de résoudre ton problème est de passer par une requête imbriquée de ce type :
SELECT numPilote, salaire FROM pilote
WHERE salaire = (SELECT max(salaire) FROM pilote)
seabust
Messages postés
740
Date d'inscription
lundi 10 mars 2008
Statut
Membre
Dernière intervention
30 juillet 2015
102
11 janv. 2014 à 16:45
11 janv. 2014 à 16:45
Cette requête n'a pas de sens pour moi, visiblement elle ne ressemble à aucune des requêtes qui sont sur le lien que tu as donné.
En fait numPilote renvoie une ligne par pilote et max(salaire) renvoie seulement une seule ligne cela n'a pas de sens car ton tableau reésultat contiendrait une colonne avec plein de lignes et une autre avec une seule ligne.
Pour résoudre ton problème je te propose une autre approche. On prends tous les pilotes, on les trie par salaire et on prend le premier.
Cela se fait de cette façon.
En fait numPilote renvoie une ligne par pilote et max(salaire) renvoie seulement une seule ligne cela n'a pas de sens car ton tableau reésultat contiendrait une colonne avec plein de lignes et une autre avec une seule ligne.
Pour résoudre ton problème je te propose une autre approche. On prends tous les pilotes, on les trie par salaire et on prend le premier.
Cela se fait de cette façon.
SELECT numPilote FROM pilote ORDER BY salaire LIMIT 0,1
chico200987
Messages postés
791
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
30 juillet 2018
144
11 janv. 2014 à 16:59
11 janv. 2014 à 16:59
Un problème se pose si deux pilotes ont le même salaire max, il n'aura qu'un seul pilote au lieu de tous ayant le même salaire..
seabust
Messages postés
740
Date d'inscription
lundi 10 mars 2008
Statut
Membre
Dernière intervention
30 juillet 2015
102
11 janv. 2014 à 17:07
11 janv. 2014 à 17:07
Je sais bien mais dans la mesure où dans sa requête il y a un max(), cela signifie qu'il y aura donc une seule ligne dans le résultat, j'ai donc construit une requête qui satisfasse cette contrainte.
chico200987
Messages postés
791
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
30 juillet 2018
144
11 janv. 2014 à 17:13
11 janv. 2014 à 17:13
Le max renvoi certes une seule et unique ligne mais ce n'est peut-être pas ce qu'il veut, malgré ses propos (tout au singulier), puisqu'il semble mal l'utiliser :/
A voir en fonction de ses besoins réels..
A voir en fonction de ses besoins réels..
seabust
Messages postés
740
Date d'inscription
lundi 10 mars 2008
Statut
Membre
Dernière intervention
30 juillet 2015
102
11 janv. 2014 à 17:15
11 janv. 2014 à 17:15
Je ne peut pas savoir ce qu'il veux dans la mesure où il ne l'a pas explicité, de toute façon avec nos deux réponses il a les deux possibilités, il faut donc attendre.
chico200987
Messages postés
791
Date d'inscription
mardi 6 avril 2004
Statut
Membre
Dernière intervention
30 juillet 2018
144
11 janv. 2014 à 17:19
11 janv. 2014 à 17:19
Exactement :)