Bonjour,

Je cherche à optimiser une page ASP comportant de multiples accès à une base de données (Access) et je pense pouvoir réduire le nombre de requêtes.

Ma base dispose d'une table Projet et d'une table Etat. Un projet peut avoir plusieurs états ou aucun état.

J'aimerai, avec un seul select, trouver pour chaque projet son nom et son état le plus récent.

Pour l'instant je fais 2 requêtes (je simplifie) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Select id, nom From Projet
puis pour chaque projet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Select e.typeEtat From Etat e Where idProjet = ? And e.date = (SELECT MAX(e2.date) From Etat e2 Where e2.idProjet = ?)
où les deux paramètres sont l'id du projet et si aucune ligne n'est retournée à la deuxième requête, le projet n'a donc pas d'état.

J'aimerai en un seul select obtenir le nom et le type d'état le plus récent pour ce projet en le mettant à null si le projet n'a pas d'état.

Je pensais utiliser un Left Join mais je ne connais pas trop les possibilités du Join. Pour le moment, avec le join je récupère tous les états des projets grâce à cette requête :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT p.nom, e.typeEtat FROM Projet p LEFT JOIN Etat e ON p.id=e.idProjet
Mais je ne parviens pas à récupérer uniquement l'état le plus récent.

Comment faire ? Est-ce possible ?

Merci d'avance pour votre aide.