Requete SQL complexe.

Eléphant du PHP | 50 Messages

23 juin 2009, 21:46

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

ViPHP
ViPHP | 2291 Messages

23 juin 2009, 21:54

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
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

23 juin 2009, 22:23


Eléphant du PHP | 50 Messages

23 juin 2009, 22:30

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

Eléphant du PHP | 50 Messages

23 juin 2009, 23:35

AND COUNT(eleves.numeleve)>=3

Ca ne fonctionne pas

Avatar du membre
ViPHP
ViPHP | 3008 Messages

24 juin 2009, 09:26

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

Eléphant du PHP | 50 Messages

24 juin 2009, 11:03

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