Tuning Max
Messages postés314Date d'inscriptionmercredi 15 juin 2005StatutMembreDernière intervention31 août 20061 21 sept. 2005 à 15:54
donne nous un peu plus d'information sur la structure de ta table ( les noms des champs leur type)
sinon a priori ça ne devrait pas poser trop de problème
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 21 sept. 2005 à 17:23
stabe
en fait non, ta requete telle qu'elle est ne retournera rien. elle provoquera une erreur, car pour utiliser la fonction d'agregat "MAX()", il faut preciser l'agregat...
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 21 sept. 2005 à 17:55
bah moi aussi j'avais ecrit des betises. la requete ne retournait rien finalement, elle aurait a la rigueur retourné quelque chose avec un count(*) mais pas avec un MAX...
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200620 21 sept. 2005 à 19:58
Salut,
aieeeuuuuu > si on s'en tient à la question de départ, tu ne dis pas de bêtise, bien au contraire.
La syntaxe que tu proposes et que je rappelle ci-dessous est la bonne.
"select id, velo from ma_table where id = (select max(id) from ma_table)"
Pour s'en convaincre, il suffit ensuite de faire :
MsgBox rst!id & " - " & rst!velo
rst étant le nom du recordset (DAO ou ADO)
-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 22 sept. 2005 à 09:44
Utilise l'assistant d'access...
Il te le fait automatiquement!
tu vas dans requêtes, tu fais nouveau
Tu choisis la table dont tu as besoin et fermer
Ensuite tu choisis le champs ID et lui UNIQUEMENT!
dans la grille blanche, tu fais un clic droit - Opérations
Dans la ligne opération qui apparait, tu choisis Max pour ID
Tu lances la rq tu verras alors l'ID max de ta table.
ATTENTION: si tu choisis lID et velo, tu verras tous les max de vélo, donc imaginons,que tu es:
ID VELO
1 A
2 B
Le résultat sera identique, car le max pour A c'est 1 et pour B c'est 2
Tandis que si tu mets que ID, il diras que le max dans la colonne c'est 2
Donc tu sauves ta requête. tu la nommes rq_max_id (par exemple)
Ensuite tu fais une nouvelle requête
Dans laquelle, tu mets cette fois ta table + rq_max_id
tu fais ensuite glisser le champ id de la table sur celui de la requête.
Tu fais alors une jointure...
Et là il ne te reste plus qu'à prendre le champs ID dans requête et le
champs Velo dans la table, et tu auras bien, l'id max et son velo
correspondant!
Ca c pour la pratique
Donc en fait
select id, velo from ma_table where id = (select max(id) from ma_table)
est juste car, il va bien récupérer l'id de la rq_max_id ci-dessus
Tu peux même l'écrire comme telle dans ta requête
Soit en pensant par SQL, soit en mettant select max(id) from table