Précédent   Forum du club des développeurs et IT Pro > Général Développement > ALM > Modélisation
Modélisation Forum d'entraide pour les diagrammes UML et les MCD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 08/03/2012, 19h05   #1
devman2011
Candidat au titre de Membre du Club
 
Homme Kamel Ghanem
Enseignant
Inscription : août 2011
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Kamel Ghanem
Localisation : Algérie

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : août 2011
Messages : 59
Points : 12
Points : 12
Par défaut Liste élèves non notés dans une matière donnée

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 :
1
2
3
SELECT e.idelv,e.nom,e.pren,c.libcla,m.libmat,t.libtrim,n.note1,n.note2,n.note3 FROM classes c INNER JOIN 
eleves e ON c.idcla=e.idcla LEFT JOIN notes n ON e.idelv=n.idelv 
WHERE e.idcla =4 AND n.idmat=3 AND n.idtrim=1
Voilà , j'utilise la base de données SQL SERVER 2008 , Merci pour tout.
devman2011 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2012, 10h05   #2
Richard_35
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 857
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 857
Points : 3 865
Points : 3 865
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 , ....) ;
Eleve(idelv, nomelv, prenelv, .... , #idcla , ....) ;
Matiere(idmat, libmat , ....) ;
Trimestre(idtrim, libtrim, datedeb, datefin) ;
Examen(idexamen, libexamen, #idmat, ...) ;
Note(#idelv, #idtrim, #idexamen, note, ...).
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.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2012, 21h19   #3
devman2011
Candidat au titre de Membre du Club
 
Homme Kamel Ghanem
Enseignant
Inscription : août 2011
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Kamel Ghanem
Localisation : Algérie

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : août 2011
Messages : 59
Points : 12
Points : 12
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
devman2011 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2012, 00h16   #4
CinePhil
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 13 659
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 49
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 13 659
Points : 25 568
Points : 25 568
Envoyer un message via MSN à CinePhil
Citation:
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
Citation:
Notes ( #idelv , #idmat , #idtrim , note1 , note2 , ...)
Ça m'étonnerait qu'on t'ai laissé faire un tel schéma sans rechigner !

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 !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2012, 09h46   #5
dba01
Membre habitué
 
Homme Daniel BALLAND
Retraité MO
Inscription : mai 2008
Messages : 73
Détails du profil
Informations personnelles :
Nom : Homme Daniel BALLAND
Âge : 64
Localisation : France, Côtes d'Armor (Bretagne)

Informations professionnelles :
Activité : Retraité MO
Secteur : Finance

Informations forums :
Inscription : mai 2008
Messages : 73
Points : 128
Points : 128
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."
dba01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2012, 12h02   #6
pacmann
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 424
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 32
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 424
Points : 2 434
Points : 2 434
Salut,

Citation:
Envoyé par devman2011 Voir le message
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.
Avec un exemple : si un élève à 10/20 sur toutes ces notes... ça fait :
((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/
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2012, 14h43   #7
Richard_35
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 857
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 857
Points : 3 865
Points : 3 865
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.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2012, 03h23   #8
Hephaistos007
Membre Expert
 
Avatar de Hephaistos007
 
Inscription : décembre 2004
Messages : 1 603
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 603
Points : 1 955
Points : 1 955
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/
Hephaistos007 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h24.


 
 
 
 
Partenaires

Hébergement Web