Bonjour à tous,

Je souhaite, dans une requête de sélection, ne faire apparaître que la valeur la plus récente d'un champ pour une clé donnée.
Je vous explique un peu l'architecture.
La table [Tous sat] contient une clé primaire (donc sans doublon) qui est la colonne "Cospar".
Cette table est liée, entre autres, à une autre dénommée [Statut] qui contient également une colonne "Cospar" avec un liaison du type "left join". Dans cette table, "Cospar" n'est pas une clé primaire puisqu'un changement d'état peu intervenir et nécessiter la création d'une deuxième ligne portant le même numéro "Cospar".
Pour une question d'historisation, je souhaite conserver toutes les entrées et donc, des doublons.

Dans la requête exposée en fin de message, le résultat renvoie toutes les entrées de la table [statut] portant un "cospar" présent également dans la table [Tous sat].

Ce que je souhaite, c'est que seule la dernière entrée de la table [statut] pour un "Cospar" donné soit renvoyée.

J'espère que vous aurez compris et que vous pourrez m'aider.
Je reste à votre disposition pour toute information complémentaire dont vous pourriez avoir besoin pour résoudre mon problème.

Merci d'avance.

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
SELECT [Tous sat].Cospar, [Tous sat].US, [Tous sat].Famille, [Tous sat].Nom, [Tous sat].Lancement, STATUT.STATUT, [Tous sat].Orbite
FROM (([Tous sat] LEFT JOIN PTF ON [Tous sat].N°BASE = PTF.N°BASE) LEFT JOIN CU_Positionnement ON [Tous sat].N°BASE = CU_Positionnement.N°BASE) LEFT JOIN STATUT ON [Tous sat].N°BASE = STATUT.N°BASE
WHERE ((([Tous sat].Lancement)<DateSerial(Year(Date()),Month(Date()),1-1)) AND ((STATUT.[DATE de validité])<Date()-41) AND (([Tous sat].Pays)="RUS" ) AND (([Tous sat].Missions)="P" ))
OR ((([Tous sat].Lancement)<DateSerial(Year(Date()),Month(Date()),1-1)) AND ((STATUT.[DATE de validité]) Is Null) AND (([Tous sat].Pays)="RUS" ) AND (([Tous sat].Missions)="P" ))
ORDER BY [Tous sat].Famille, [Tous sat].Lancement, STATUT.[DATE de validité] DESC;