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 :
et ainsi de suite.Semestre1:
BTS = 60 personnes
DUT = 30 personnes
CPGE = 10 personnes
Semestre2:
BTS = 55 personnes
DUT = 35 personnes
CPGE = 11 personnes
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 :
Le problème c'est que çà me retourne "1" alors que dans ma table j'ai deux étudiants possédant un BTS !
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%'";
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 !
Partager