OVH Cloud OVH Cloud

Requête à faire

5 réponses
Avatar
curt
J’ai crée une base de donnée permettant de gérer un grand nombre de
documents. Chaque document peut posséder un ou plusieurs indices de révision
noté de A à Z.
Deux tables sont liée dans cette base : la première (DOCUMENT) intègre le
titre du document ainsi que sont numéro d’ordre, La seconde (SF INDICES)
contient les indices et apparaît en tant que sous-formulaire dans le
formulaire DOCUMENT lors de la saisie des différents indices de révisions.
Une date de révision est associée à chacun des indices
L’intérêt de cette base est de pouvoir listé l’intégralité des documents
avec tout les indices, mais aussi d’obtenir une liste avec seulement le
dernier indice et ce pour chaque document.
La date la plus élevée indique obligatoirement l’indice de révision le plus
élevé (c’est celui-là qu’on veut afficher). Une requête simple comme (SELECT
MAX ([DATEREVISION]) FROM ([RSF Indices])) ne renvoie que la valeur maximum
de la date de révision et ce pour un seul document.
Qui pourrait m’indiquer la bonne requête a utiliser pour obtenir le résultat
voulu ?

D’avance merci.

5 réponses

Avatar
Raymond [mvp]
Bonjour.

essaie de faire une requête regroupement:
SELECT DOCUMENT.Numéro, Max(INDICES.Madate) AS MaxDeMadate
FROM DOCUMENT INNER JOIN INDICES ON DOCUMENT.Numéro = INDICES.Numéro
GROUP BY DOCUMENT.Numéro;


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"curt" a écrit dans le message de news:

J'ai crée une base de donnée permettant de gérer un grand nombre de
documents. Chaque document peut posséder un ou plusieurs indices de
révision
noté de A à Z.
Deux tables sont liée dans cette base : la première (DOCUMENT) intègre le
titre du document ainsi que sont numéro d'ordre, La seconde (SF INDICES)
contient les indices et apparaît en tant que sous-formulaire dans le
formulaire DOCUMENT lors de la saisie des différents indices de révisions.
Une date de révision est associée à chacun des indices
L'intérêt de cette base est de pouvoir listé l'intégralité des documents
avec tout les indices, mais aussi d'obtenir une liste avec seulement le
dernier indice et ce pour chaque document.
La date la plus élevée indique obligatoirement l'indice de révision le
plus
élevé (c'est celui-là qu'on veut afficher). Une requête simple comme
(SELECT
MAX ([DATEREVISION]) FROM ([RSF Indices])) ne renvoie que la valeur
maximum
de la date de révision et ce pour un seul document.
Qui pourrait m'indiquer la bonne requête a utiliser pour obtenir le
résultat
voulu ?

D'avance merci.



Avatar
curt
Merci Raymond pour ta réponse.... ça fonctionne mais j'ai été incomplet dans
ma première demande.
La base possède d'autres champs (statut - date de statut - n° envoi client -
date envoi client,etc...)
En conclusion, je n'ai pas la seule ligne comportant le dernier indice de
révision (toujours celui dont la date est max), pour CHAQUE document, mais
l'intégralité des enregistrements... donc c'est pas bon...
Pour être précis, il faut extraire de la table RSF Indices UNIQUEMENT les
renseignements contenu sur la ligne où la date est max.
En espérant que tu a la réponse..
Avatar
Raymond [mvp]
On va décomposer en requêtes enregistrées et si tu le veux on pourra plus
tard faire une seule requête avec sous requête, mais plus tard.

faire une requête de regroupement comme la précédente.
SELECT DOCUMENT.Numéro, Max(INDICES.Madate) AS MaxDeMadate
FROM DOCUMENT INNER JOIN INDICES ON DOCUMENT.Numéro = INDICES.Numéro
GROUP BY DOCUMENT.Numéro;
Tu la nommes Requête3 par exemple;

tu fais une requête sélection normale sur la table et la requête requête3
mises en relation.
SELECT DOCUMENT.*
FROM DOCUMENT INNER JOIN Requête3 ON DOCUMENT.Numéro = Requête3.Numéro
WHERE DOCUMENT.Madate = [Requête3]![MaxDeMadate];
tu la nommes requête4.
tu exécutes la requête4.
il est bien évident qu'il faut que tu rajoutes les tables et les champs
suplémentaires que tu dois rapatrier dans la requête4.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"curt" a écrit dans le message de news:

Merci Raymond pour ta réponse.... ça fonctionne mais j'ai été incomplet
dans
ma première demande.
La base possède d'autres champs (statut - date de statut - n° envoi
client -
date envoi client,etc...)
En conclusion, je n'ai pas la seule ligne comportant le dernier indice de
révision (toujours celui dont la date est max), pour CHAQUE document, mais
l'intégralité des enregistrements... donc c'est pas bon...
Pour être précis, il faut extraire de la table RSF Indices UNIQUEMENT les
renseignements contenu sur la ligne où la date est max.
En espérant que tu a la réponse..





Avatar
curt
Merci encore une fois - reste l'interrogation suivante : A quel endroit dans
la requête dois-je ajouter les tables & champs supplémentaires ?


On va décomposer en requêtes enregistrées et si tu le veux on pourra plus
tard faire une seule requête avec sous requête, mais plus tard.

faire une requête de regroupement comme la précédente.
SELECT DOCUMENT.Numéro, Max(INDICES.Madate) AS MaxDeMadate
FROM DOCUMENT INNER JOIN INDICES ON DOCUMENT.Numéro = INDICES.Numéro
GROUP BY DOCUMENT.Numéro;
Tu la nommes Requête3 par exemple;

tu fais une requête sélection normale sur la table et la requête requête3
mises en relation.
SELECT DOCUMENT.*
FROM DOCUMENT INNER JOIN Requête3 ON DOCUMENT.Numéro = Requête3.Numéro
WHERE DOCUMENT.Madate = [Requête3]![MaxDeMadate];
tu la nommes requête4.
tu exécutes la requête4.
il est bien évident qu'il faut que tu rajoutes les tables et les champs
suplémentaires que tu dois rapatrier dans la requête4.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"curt" a écrit dans le message de news:

Merci Raymond pour ta réponse.... ça fonctionne mais j'ai été incomplet
dans
ma première demande.
La base possède d'autres champs (statut - date de statut - n° envoi
client -
date envoi client,etc...)
En conclusion, je n'ai pas la seule ligne comportant le dernier indice de
révision (toujours celui dont la date est max), pour CHAQUE document, mais
l'intégralité des enregistrements... donc c'est pas bon...
Pour être précis, il faut extraire de la table RSF Indices UNIQUEMENT les
renseignements contenu sur la ligne où la date est max.
En espérant que tu a la réponse..










Avatar
Raymond [mvp]
Dans le requêteur access ( mode graphique) il est possible que tu ais besoin
d'avoir éventuellement d'autres tables , il faut les rajouter. c'est
possible que tous tes champs soient dans DOCUMENT, je ne sais pas. quoi
qu'il en soit, si tu as les tables affichées , tu double-cliques sur les
champs ou tu les fais glisser dans la fenêtre du bas.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"curt" a écrit dans le message de news:

Merci encore une fois - reste l'interrogation suivante : A quel endroit
dans
la requête dois-je ajouter les tables & champs supplémentaires ?