Access et requete

paloxicide Messages postés 225 Date d'inscription mardi 6 avril 2004 Statut Membre Dernière intervention 20 juin 2006 - 21 sept. 2005 à 15:12
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 - 22 sept. 2005 à 09:47
je cherche dans la meme requete récuperer le max(id) d'une table ainsi
que dans cette meme requete l'attridut(velo) qui correspond au max(id)

10 réponses

stabe Messages postés 144 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 17 juin 2006
21 sept. 2005 à 15:54
bonjour,

select velo, max(id)
from ma_table
group by velo

-- stabe --
0
Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
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
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
21 sept. 2005 à 16:57
stabe, je pense que ta requete va remonter tous les velos, avec a coté le maxID du genre :

velo1 12
velo2 12
velo3 12
...
velo12 12

je ferai plutot :

SELECT id, velo FROM maTable WHERE id = (SELECT MAX(id) FROM maTable)

la on aura bien juste la ligne
velo12 12
0
stabe Messages postés 144 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 17 juin 2006
21 sept. 2005 à 17:06
si comme je le devine, 'id' est l'identifiant de la table, alors il n'y a qu'une seule ligne velo par id. Donc ma requete

select velo, max(id) from ma_table group by velo

ne ramènera bien qu'une seule ligne

-- stabe --
0

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

Posez votre question
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
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...
0
stabe Messages postés 144 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 17 juin 2006
21 sept. 2005 à 17:43
euh ... oui je crois que tu as raison , effectivement j'ai écrit des bêtises

oups, non pas les dents, pas les dents :-/

-- stabe --
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
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...

héhé
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
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 !?
0
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
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

dans le critère du champ ID.

Voilà


TBBUIM
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
22 sept. 2005 à 09:47
CanisLupus:

oui je sais, mais quand je disais que la requete de stabe reverrait
velo1 12
velo2 12

je m'est gouré :)

c'est donc de mon poste de 16h57 que je parlais

en fait cette requete provoque une erreur.
0
Rejoignez-nous