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

Requêtes et SQL. Discussion :

Requête 3 meilleures notes sur 4 par Elève et par matière enseignée


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club Avatar de Boubker_023
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Septembre 2007
    Messages : 61
    Points : 65
    Points
    65
    Par défaut Requête 3 meilleures notes sur 4 par Elève et par matière enseignée
    Je dispose d'une table "Elèves" avec des informations classiques:
    * RéfElève
    * Nom
    * Prénom
    * Classe
    * Adresse etc...

    Je dispose d'une table "Matières"
    * RéfMatière
    * Matière
    Je dispose aussi d'une table "ContrôlesC" qui contient les notes obtenues par chaque élève pour chacune des matières enseignées pour l'année en cours:
    * RéfContrContinu
    * RéfElève
    * RéfMatière
    * Note
    * AnnéeScolaire
    Sachant que chaque élève a subi durant toute l'année, sauf cas de force majeure, le même nombre de contrôles pour chacune des matières enseignées, il est aisé de faire la moyenne obtenue pour chacun d'eux par matière.

    Pour éliminer l'effet "accident" et en supposant par exemple que le nombre de contrôles est de 4 par matière, mon désir serait de produire une requête qui va me permettre d'extraire et ne retenir par exemple que les DEUX meilleures notes obtenues par Elève et par Matière.
    A tous, et d'avance, merci pour votre contribution

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Peut-être une idée :
    1° créer une table « MeilleursRésultats » (RéfElève, matière, note)

    2° Dans une sub
    - purger « MeilleursRésultats »
    - lire « Matières » en séquence
    - pour chaque matière, lire « Elèves » en séquence
    - pour chaque combinaison Matière-Elève exécuter un sql du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO MeilleursRésultats ( RéfElève, RéfContrContinu, RéfMatière, [Note] )
    SELECT TOP 2 ContrôlesC.RéfElève, ContrôlesC.RéfContrContinu, ContrôlesC.RéfMatière, ContrôlesC.Note
    FROM ContrôlesC
    WHERE (((ContrôlesC.RéfElève)="ELEVE") AND ((ContrôlesC.RéfMatière)="MATIERE"))
    ORDER BY ContrôlesC.Note DESC;
    Vous obtenez ainsi un extrait de "ContrôlesC" ne contenant que les
    n meilleurs résultats (n serait un paramètre de la sub)

    Revenez si difficultés

  3. #3
    Membre du Club Avatar de Boubker_023
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Septembre 2007
    Messages : 61
    Points : 65
    Points
    65
    Par défaut
    Merci ClaudeLeloup pour ta contribution. Comme je suis débutant, je pense que je n'ai pu appliquer ta suggestion que partellement pour n'arriver au final qu'à un résultat aussi partiel.
    Primo, qd tu me proposes de "- lire « Matières » en séquence
    - pour chaque matière, lire « Elèves » en séquence" je ne vois pas comment.
    Je me suis contenté de m'inspirer de ton code pour l'intégrer dans une requête sélection comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT TOP 2 T_CC.RéfCC, T_CC.RéfMatière, T_CC.RéfElève, T_CC.Note
    FROM T_CC
    ORDER BY T_CC.Note DESC;
    qui ne me donne que les DEUX MEILLEURES NOTES élèves et matières confendues alors que je souhaiterai avoir les deux meilleures notes par élève et par matière.
    Merci

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Comme je suis débutant
    On passe tous par là !
    Peux-tu poster une db avec les trois tables.
    J'y ajouterai le code avec des commentaires.

  5. #5
    Membre du Club Avatar de Boubker_023
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Septembre 2007
    Messages : 61
    Points : 65
    Points
    65
    Par défaut
    Citation Envoyé par ClaudeLELOUP Voir le message
    On passe tous par là !
    Peux-tu poster une db avec les trois tables.
    J'y ajouterai le code avec des commentaires.
    Merci bcp pour ta suggestion. Désolé pour le retard tu as deviné que c'était la période des examens. Je t'envoie une copie de ma base dans sa forme embryonnaire. Elle contient les infos sur 3 classe et 3 notes par élève pour les 3 matières enseignées. Je souhaite donc un état ou une requête qui renvoie les deux meilleures notes par élève pour chacune des trois matières
    Fichiers attachés Fichiers attachés

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Bonsoir Boubker_023
    Désolé, je ne sais pas lire ta db : j’ai Access 2000. Ta version est sans doute postérieure.
    J’ai créé une DB en respectant les noms que tu signalais dans un poste précédent.

    Si tu cliques sur « sélectionner les meilleurs résultats » tu déclenches la fonction qui exécute ce que je t’annonçais.

    Tu trouves l’exemple ici http://www.wikeo.be/files/4014/ecoletst.rar

  7. #7
    Membre du Club Avatar de Boubker_023
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Septembre 2007
    Messages : 61
    Points : 65
    Points
    65
    Par défaut
    Salut ClaudeLeloup
    Merci bcp; je me suis appliqué à mettre en pratique ton code en utilisant mes tables avec leurs relations. J'ai tjs le message suivant "Incompatibilité de critères". J'ai regardé les types de données de ts les champs des tables, rien ne m'a semblé anormal ???
    je me permets de te renvoyer un extrait de ma db au format 2000 avec ton code; si tu peux y jeter un coup d'oeil, ca serai sympa de ta part.
    A +
    Fichiers attachés Fichiers attachés

  8. #8
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    OK, je prends mais attends un peu : j'ai plusieurs fers au feu !
    Je te reviens.

  9. #9
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 920
    Points
    281 920
    Par défaut
    Le problème : au départ j'ai cru que RéfElève et RéfMatière étaient définis en Texte.
    J'ai modifié et testé.
    NB : j'ai modifié aussi le type de 'note' : Entier ---> Réel simple puisque tu souhaites 2 décimales.
    A quand tu veux !

  10. #10
    Membre du Club Avatar de Boubker_023
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Septembre 2007
    Messages : 61
    Points : 65
    Points
    65
    Par défaut Goooooooooooooood
    Merci bcp ClaudeLeloup, ca marche impec; je ne te dis pas "je te revaudrai ça une autre fois" vu mon niveau. Alors à bientôt.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 16/03/2014, 11h29
  2. Réponses: 5
    Dernier message: 10/05/2008, 19h11
  3. Réponses: 2
    Dernier message: 10/05/2008, 18h53
  4. Requête des meilleurs prix sur pour tous les produit
    Par Baathor dans le forum Développement
    Réponses: 4
    Dernier message: 07/10/2007, 21h28
  5. Requête des meilleurs prix sur pour tous les produit
    Par Baathor dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/10/2007, 21h28

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