Bonjour,
Je m'excuse pour le titre du message, je ne savais pas comment le présenter. Je le modifie sur vos suggestions si vous le voulez. Merci.
Voici un extrait du résultat d'une requête :
je voudrais ne garder que la ligne qui contient le num_contrat le plus élevé pour chaque id_avs.
Exemple pour Catherine (id_avs = 2), je voudrais : 2, Catherine, 00/00/000, 5
Évidemment, si je fais un GROUP BY sur id_avs, j'ai bien une seul ligne, mais pas forcément le num_contrat le plus élevé.
Je suis parti sur l'idée d'une sous requête mais je n'arrive pas à la formuler correctement.
Voici la requête qui renvoie l'extrait de l'image :
J'ai essayé ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SELECT avs.id_avs, nom_usage_avs, prenom_avs, DATE_FORMAT(contrat.date_fin_contrat, '%d/%m/%Y') AS fin, contrat.num_contrat FROM `signe_contrat` AS C1 LEFT JOIN `avs` ON C1.id_avs = avs.id_avs LEFT join `contrat` ON C1.num_contrat = contrat.num_contrat ORDER BY nom_usage_avs ASC, num_contrat ASC, fin DESC
mais j'obtiens cette erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SELECT avs.id_avs, nom_usage_avs, prenom_avs, DATE_FORMAT(contrat.date_fin_contrat, '%d/%m/%Y') AS fin, contrat.num_contrat FROM `signe_contrat` AS C1 LEFT JOIN `avs` ON C1.id_avs = avs.id_avs LEFT join `contrat` ON C1.num_contrat = contrat.num_contrat AND avs.id_avs IN (SELECT avs.id_avs FROM signe_contrat AS C2 WHERE C1.num_contrat = MAX(C2.num_contrat)) ORDER BY nom_usage_avs ASC, num_contrat ASC, fin DESCEst-ce que je suis sur la bonne piste ?#1111 - Invalid use of group function
Merci de votre aide.
Partager