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) :
puis pour chaque projet
Code : Sélectionner tout - Visualiser dans une fenêtre à part Select id, nom From Projet
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.
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 = ?)
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 :
Mais je ne parviens pas à récupérer uniquement l'état le plus récent.
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
Comment faire ? Est-ce possible ?
Merci d'avance pour votre aide.![]()
Partager