IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modélisation Discussion :

Liste élèves non notés dans une matière donnée


Sujet :

Modélisation

  1. #1
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 60
    Points : 47
    Points
    47
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    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 !

  3. #3
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2011
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2011
    Messages : 60
    Points : 47
    Points
    47
    Par défaut
    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

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    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
    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 Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 !

  5. #5
    Membre habitué
    Homme Profil pro
    Retraité MO
    Inscrit en
    Mai 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Côtes d'Armor (Bretagne)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 75
    Points : 136
    Points
    136
    Par défaut
    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."

  6. #6
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    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/

  7. #7
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    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 !

  8. #8
    Expert confirmé
    Avatar de Hephaistos007
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Décembre 2004
    Messages
    2 493
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 493
    Points : 4 166
    Points
    4 166
    Par défaut
    Je n'ai rien compris mais malgré tout voilà ce qui me vient à l'esprit :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    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 --- devise SHADOKS

    Kit de survie Android : mon guide pour apprendre à programmer sur Android, mon tutoriel sur les web services et enfin l'outil en ligne pour vous faire gagner du temps - N'oubliez pas de consulter la FAQ Android

Discussions similaires

  1. Liste des élèves non notés dans une matière donnée
    Par devman2011 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 14/03/2012, 19h11
  2. [XL-2003] calcule le nombre de ligne non vide dans une colonne donnée
    Par aefmaaradji dans le forum Excel
    Réponses: 2
    Dernier message: 27/07/2010, 15h08
  3. Liste des tables existantes dans une base de données
    Par Lorenzole+bo dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/11/2007, 20h15
  4. Réponses: 1
    Dernier message: 26/09/2007, 17h16
  5. Réponses: 8
    Dernier message: 25/09/2007, 08h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo