|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Kamel GhanemEnseignant Inscription : août 2011 Messages : 59 ![]() |
Salut
J'ai un petit soucis concernant une requete SQL Voilà j'ai les tables suivantes : Classes ( idcla , libcla , ....) Eleves ( idelv , nomelv , prenelv , .... , #idcla , ....) Matieres ( idmat , libmat , ....) Trimestres ( idtrim , libtrim , datedeb , datefin) Notes ( #idelv , #idmat , #idtrim , note1 , note2 , ...) Supposant qu'un prof qui enseigne une matière donnée n'a pas encore saisi les notes de ses élèves dans cette matière et on veut qu'en choisissant sa classe , une liste de ses élèves s'affiche ainsi que les colonnes : note1 , note2 , ...c'est-à-dire en tout ça : Nom Prénom note1 note2 Bernard Yoan NULL NULL Dumoulin Seb NULL NULL ...... ..... NULL NULL Bref , chaque prof a ses propres classes et il doit saisir leurs notes dans la matière qu'il enseigne donc si on suppose que la table Matières est totalement saisie et qu'elle contient toutes les matières enseignées mais que la table Notes n'en contient pas 3 ou 4 ( par exemple les profs de physique et de maths ont oublié de saisir les notes de leurs élèves dans ces matières ). Ma question : Comment , à travers une requete SQL , afficher la liste des élèves d'une classe donnée dont leurs notes n'ont pas encore été saisies et ce pour une matière donnée et un trimestre donné , c'est-à-dire afficher les élèves ( nom , prénom , ...) et les colonnes représentant leurs notes respectives mais dont le contenu est : NULL afin de permettre au prof de saisir les notes. J'ai essayé cette requete SQL mais ça ne me donne pas ce que je voulais : Code :
|
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 857 ![]() |
Bonjour Devman2011,
Tu pars, d'entrée, sur de mauvaises bases... que tu as, d'ailleurs, bien repérées en parlant des NULL. Suggestion : Classe(idcla, libcla , ....) ;vite fait... mais, je pense que tu comprends l'idée : ne pas avoir les notes en colonnes, mais en lignes. NB : il me semble qu'il est d'usage de mettre au singulier le nom des tables : a priori, nous nous doutons qu'elles comprendront plusieurs enregistrements...
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Kamel GhanemEnseignant Inscription : août 2011 Messages : 59 ![]() |
Salut
Merci de me répondre mais j'ai déjà poster ce problème de conception ou modélisation de mes tables et grace aux réponses sur le forum j'ai pu obtenir le MLD de ma base de données , ce qui me pose problème c'est la requete SQL qui me permettrait d'avoir la liste des élèves d'une classe donnée dont leurs notes contiennent NULL dans une matière donnée et un trimestre donné. Le problème de la conception est déjà réglé car en fait j'ai la table Notes : Note ( #idelv , #idmat , #idtrim , moyev , dev1 , dev2 , examen_trim ) La formule pour calculer la moyenne trimestrielle d'un élève est très complexe : Moy_Trim = ( ( moyev + dev1 + dev2 ) / 3 ) + examen_trim ) / 5 Donc vous voyez bien que c'est très dur de calculer cette moyenne trimestrielle à travers les relations que vous m'avez proposées et je vous remercie de m'avoir éclairer sur ce point mais ça ne m'arrange pas au niveau du calcul des moyennes trimestrielles de chaque élève et ce dans chaque trimestre. J'ai fait des tests concluants en calculant la moyenne trimestrielle de chaque élève dans chaque trimestre en utilisant la fonction AVG de SQL mais ce que je n'obtient pas c'est la liste des élèves d'une classe donnée dont les notes : moyev , dev1 , dev2 , examen_trim Contiennent des valeurs NULL afin que je puisse les saisir étant donné que les élèves sont déjà saisis dans la table Eleve et que les matières sont déjà saisies dans la table Matiere et la meme chose pour les trimestres dans la table Trimestre. Merci pour vos efforts M |
|
|
00
|
|
|
#4 | ||
![]() ![]() |
Citation:
Citation:
![]() Le modèle de Richard_35 est bien meilleur. Quant à la requête, adresse toi au forum Langage SQL ou à celui dédié à ton SGBD.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
||
|
00
|
|
|
#5 |
|
Membre habitué
![]() Daniel BALLANDRetraité MO Inscription : mai 2008 Messages : 73 ![]() |
Et avec un idNote, auto incrémenté, ça n'éviterait pas les nulls ?
__________________
R.BASILE, 1971 : "Il y a mille et un procédés pour accélérer des particules. Le seul véritablement fondamental restant...le carnet de chèques." |
|
|
00
|
|
|
#6 | |
|
Membre Expert
![]() Pacman PacmanBusiness analyst Inscription : juin 2004 Messages : 1 424 ![]() |
Salut,
Citation:
((10+10+10)/3)+10)/5 => Il manque une parenthèse => Je suppose qu'il faut en ouvrir une de plus au départ... mais ça fait une moyenne de 4, ce qui est super injuste pour quelqu'un qui a eu 10 tout le trimestre Bon, plus sérieusement, tu veux juste pondérer les notes, non ? Dans ce cas, ajoute cette pondération dans le modèle, et calcule ta moyenne comme barycentre de ces points pondérés.
__________________
(c'est ma photo) Paku, Paku ! Pour les jeunes incultes : non, je ne suis pas un pokémon... Le pacblog : http://pacmann.over-blog.com/ |
|
|
00
|
|
|
#7 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 857 ![]() |
Bonjour à tous,
Je pense, mais je peux me tromper, que Devman2011 est ennuyé par les éventuelles valeurs NULL qui font mal réagir sa formule (qui, au demeurant, ne présente aucune complexité... mais, c'est une autre histoire). Donc, soit Devman2011 adopte un modèle qui évite ces valeurs NULL, soit il reste sur son modèle et, dans ce cas, il faut tester, une à une les valeurs concernées par la formule (si =NULL, alors =0, ...). En tout état de cause, nous voyons, là, les "dégâts" causés par le fameux "bonhomme NULL", quand il est "mal placé".
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() ![]() Inscription : décembre 2004 Messages : 1 603 ![]() |
Je n'ai rien compris mais malgré tout voilà ce qui me vient à l'esprit :
Code sql :
SELECT * FROM xxx LEFT OUTER JOIN yyy ON www WHERE zzz IS NULL; A prendre ou à laisser
__________________
Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. [SHADOKS] Retrouvez mes cours et tutos autour d'Android/Java/Eclipse sur http://olegoaer.developpez.com/
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com