Bonjour,

Je sais pas trop comment expliquer ce que je voudrais faire, alors je vais monter un exemple...

J'ai une table sql: contrat

id - id_contrat - date_debut - date_fin
1 - 1 - 2009-06-08 - 2010-06-07
3 - 2 - 2008-06-09 - 2009-06-08
4 - 2 - 2009-06-09 - 2010-06-08

J'aimerais, avec une requête, qu'elle me retourne les lignes avec la date de fin (date_fin) la plus grande pour chaque "id_contrat"

Donc théoriquement, j'aimerais arrivé a ce résultat :

id - id_contrat - date_debut - date_fin
1 - 1 - 2009-06-08 - 2010-06-07
4 - 2 - 2009-06-09 - 2010-06-08

J'essaye donc une requête :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
SELECT
id,
id_contrat,
periode_debut,
MAX(periode_fin) AS max_periode_fin
FROM contrat
GROUP BY id_contrat
Cela me retourne le résultat suivant :

id - id_contrat - periode_debut - max_periode_fin
1 - 1 - 2009-06-08 - 2010-06-07
3 - 2 - 2008-06-09 - 2010-06-08

J'ai bien mes deux plus grandes dates pour chaque contrat, mais si on regarde l'id et date_debut à la ligne 2

Cela est bien ce que je voulais, j'ai mes deux plus grande date pour chaque contrats.
Mais voilà ou je veux en venir, si je compare la deuxième ligne du résultat avec la ligne qui possède la plus grande date dans la table contrat, je constate :

Que la ligne qui a la plus grande date pour le contrat 2 est :

id - id_contrat - date_debut - date_fin
4 - 2 - 2009-06-09 - 2010-06-08

Et la ligne qui est retourné après la requête :

id - id_contrat - date_debut - date_fin
3 - 2 - 2008-06-09 - 2010-06-08

id et date_debut ne sont plus les mêmes

Pourquoi cela ? Comment faire qu'il me retourne les lignes exactes ?

Merci d'avance