Page 1 sur 1

Requete SQL complexe.

Posté : 23 juin 2009, 21:46
par remy42
Bonjour j'espere etre au bon endroit pour ma demande.
Je suis en train de finaliser mon developpement d'intranet php pour gerer les absences dans une ecole. Je n'arrive pas a construire une requete pour remplir mon tableau dans ma page.

Il me reste un tableau a construire, le voici :

Nom-------Prénom---------Nombre absences injustifiées

Mes tables sont les suivantes ( pour faire court ) :

Eleves ( numeleve, nomeleve, prenomeleve )
Absences ( numabs, ....., booljustif , #numeleve )

Pour info: booljustif c'est oui ou non pour savoir si l'absence est justifiée ou pas

Je sais qu'il faut faire un truc du style :

Select count(*) as nombreabsence , nomeleve , prenomeleve from absences , eleves where ....

Je ne sais pas quoi mettre dans le WHERE

SI vous pouviez m'aidez ce serait génial

Merci d'avance j'espere avoir été clair dans mes explications

Posté : 23 juin 2009, 21:54
par dunbar
Salut

Simplement ceci peut-être
WHERE nomeleve = 'Nom_de_l\'eleve'
AND prenomeleve = 'Prenom_de_l\'eleve'
Tu pourrais ne prendre que le nom mais alors il y aurais un risque important au cas ou tu deux eleve qui porte le même nom, par contre en rajoutant le prenom là il y a déjà moins de risque

Posté : 23 juin 2009, 22:23
par charabia

Posté : 23 juin 2009, 22:30
par remy42
Merci beaucoup charabia

J'ai dessiner sur un papier ton exemple et le mien j'ai fait la liaison pour comprendre et ca fonctionne a peu pres

Voici ma requete. Mais MALHEUREUSEMENT :( ca m'affiche un tableau avec chaque eleve et son nombre d'absence en face )

Et moi ce que je souhaite c'est que sa affiche que si le nombre d'absences INJUSTIFIEE est SUPERIEUR ou EGALE a 3

Le injustifiée je le gère par booljustif='non' ca fonctionne
Mais comment dire AND count>=3 ???

Merci d'avance on arrive au bout :)

SELECT eleves.prenomeleve, eleves.nomeleve, absences.booljustif, COUNT(absences.numabsence) AS Nb_abs_Injustifiee
FROM eleves LEFT JOIN absences ON eleves.numeleve = absences.numeleve
WHERE absences.booljustif='non'
AND xxxxxxxxxxxxxxxxxxx
GROUP BY eleves.nomeleve

Posté : 23 juin 2009, 23:35
par remy42
AND COUNT(eleves.numeleve)>=3

Ca ne fonctionne pas

Posté : 24 juin 2009, 09:26
par charabia
Avec un petit HAVING.

Code : Tout sélectionner

SELECT eleves.prenomeleve, eleves.nomeleve, absences.booljustif, COUNT(absences.numabsence) AS Nb_abs_Injustifiee FROM eleves LEFT JOIN absences ON eleves.numeleve = absences.numeleve WHERE absences.booljustif='non' GROUP BY eleves.nomeleve HAVING Nb_abs_Injustifiee >=3
A tester

Posté : 24 juin 2009, 11:03
par remy42
Merci beaucoup ca fonctionne a merveille

Merci a tous pour votre aide qui m'aura été très précieuse tout au long de ce petit pojet