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 :
Cela me retourne le résultat suivant :
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
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
Partager