Bonjour,
Dans une application existante que je reprends, je dois filtrer une liste de documents en ne sélectionnant que la dernière révision. Malheureusement, la structure de la base est loin d'être parfaite et il me faut effectuer un tri portant sur plusieurs champs pour classer les révisions et ainsi déterminer la dernière.
Voici un exemple de la liste des documents triée comme souhaité
NUMERO----INDICE----STATUT
AAAAA----B----OBS
AAAAA----B----INF
AAAAA----A----VIS
BBBBB----B----VIS
BBBBB----A----VIS
CCCCC----A----OBS
CCCCC----A----INF
DDDDD----A----INF
Mon besoin est de sélectionner dans cette liste, la première ligne pour chaque numéro. Dans mon exemple, cela donne:
NUMERO----INDICE----STATUT
AAAAA----B----OBS
BBBBB----B----VIS
CCCCC----A----OBS
DDDDD----A----INF
J'ai essayé avec une sous requête
Mais le moteur ne sait pas l'interpréter: il me demande comme paramètre le asD.Numero.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT asD.Numero, asDernier.INDICE, asDernier.STATUT FROM tblDocuments AS asD, [SELECT TOP 1 asM.NUMERO, asM.INDICE, asM.STATUT FROM (tblModif as asM INNER JOIN tblIndice as asI ON asM.INDICE = asI.Ind) INNER JOIN tblStatut as asS ON asM.STATUT = asS.Statut WHERE asD.Numero= asM.NUMERO ORDER BY asM.NUMERO DESC , asI.Rang DESC , asM.INDICE DESC , asS.Rang DESC , asM.STATUT DESC]. AS asDernier;
J'ai essayé en plaçant la liste dans une requête:
J'ai le même problème.
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT asD.Numero, asDernier.INDICE, asDernier.STATUT FROM tblDocuments AS asD, [SELECT TOP 1 asV.NUMERO, asV.INDICE, asV.STATUT FROM qryVersions as asV WHERE asD.Numero= asV.NUMERO]. AS asDernier;
J'ai essayé en décomposant le problème en plusieurs requêtes... je tourne rond.
peut être en numérotant les lignes pour chaque numéro de document...
Quelqu'un a une idée?
Partager