Salut,

Voilà je suis en train de faire un site de statistiques sur les formations antérieur suivi par les étudiants de notre département.

Voici de que j'aimerais à la fin =>

Exemple de résultat :

Semestre1:

BTS = 60 personnes
DUT = 30 personnes
CPGE = 10 personnes

Semestre2:

BTS = 55 personnes
DUT = 35 personnes
CPGE = 11 personnes
et ainsi de suite.

J'ai deux tables : formationanterieur et etudiant dont voici le contenu en screen ci-dessous

Pour l'instant j'aimerais juste selectionner les etudiants du semestre 1 (e.semestreId=1)
qui ont suivi un BTS (libelleDiplomeEtablissementFormationAnterieur LIKE '%BTS%')

=> Le problème est que dans ma table formationanterieur je possède leur premiere annee de BTS ainsi que leur deuxieme annee. Donc pour ne pas fausser les statistiques, il me faudrait juste la dernière année du diplome pour ne pas avoir deux BTS pour un même étudiant
(anneeDiplomeEtudiantFormationAnterieur = (
SELECT MAX( anneeDiplomeEtudiantFormationAnterieur ) FROM formationanterieur )
.

J'ai donc réalisé cette requête :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
SELECT count(f.libelleDiplomeEtablissementFormationAnterieur) 
FROM formationanterieur f 
LEFT JOIN etudiant e 
ON f.nomEtudiantFormationAnterieur=e.nomEtudiant 
AND f.prenomEtudiantFormationAnterieur=e.prenomEtudiant 
AND e.semestreId=1
WHERE anneeDiplomeEtudiantFormationAnterieur = ( 
SELECT MAX( anneeDiplomeEtudiantFormationAnterieur ) 
FROM formationanterieur ) 
AND f.libelleDiplomeEtablissementFormationAnterieur 
LIKE '%BTS%'";
Le problème c'est que çà me retourne "1" alors que dans ma table j'ai deux étudiants possédant un BTS !

Je crois que la sélection de l'année max pour chaque personne est erronée. Il ne prends que l'année max dans toute la table et non pas pour chaque étudiant possédant un BTS...

Merci de votre aide !