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

PHP & Base de données Discussion :

calculer 4 notes maximal a partir de 6notes d'un eleve


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 204
    Par défaut calculer 4 notes maximal a partir de 6notes d'un eleve
    Bonjour
    J'ai une table qui contien les enregistrements des élèves, l'élève est identifier par le champs num_ins.

    chaque élève a 6 enregistrement ça veu dir 6 notes

    je veux extraire les 4 notes maximal de chaque eleve.

    par exemple
    eleve 1 il a (15,6,13,9,11,10) je veux extraire (15,13,11,10)


    merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    bonjour,
    je suppose que dans ta table il y a autant de num_ins que de notes pour chaque élève.

    2 approches sont possibles pour récupérer les 4 meilleures notes de l'élève.
    - avec les fenêtres de partition sous MYSQL 8( ou sur Postgres)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my_table(num_ins, note)
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT * FROM (
     
      (  SELECT num_ins, note, RANK() OVER( PARTITION BY num_ins ORDER BY note DESC ) AS rang_note FROM my_table )  AS t
    )
    WHERE t.rang_note <=4
    La sous requête divise ou partionne, pour chaque élève, le jeu de résultats de la requête. De cette partition sur l'élève, on attribue un rang sur ses notes.
    La requête principale récupère les 4 meilleures notes de chaque élève.

    - Pour des version de MYSQL antérieure à la version 8
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT num_ins, GROUP_CONCAT( note ORDER BY note DESC ) notes 
    FROM my_table
    GROUP BY num_ins;

    cette requête récupère toutes les notes de l'élève triées.

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 204
    Par défaut
    merci beaucoup pour la réponse je vais l'essayer
    oui ma table contient plusieurs username et chaque username a plusieurs notes

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 204
    Par défaut
    j'ai fait cette requête mais toujours il m'affiche no database selected.

    j'ai même exécuté seulement ça bien sûr avec mes nom des champs
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT num_ins, note, RANK() OVER( PARTITION BY num_ins ORDER BY note DESC ) AS rang_note FROM my_table
    et la même erreur

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Par défaut
    l'erreur rencontrée n'a rien à voir avec la requête.
    L'erreur indique clairement que t'as sélectionnée aucune base de donnée pour pouvoir exécuter la requête. si utilises phpMyadmin, il faut d'abord cliquer sur la base de donnée avant de lancer la requête.

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 204
    Par défaut
    merci beaucoup vous m'avez sauvé

  7. #7
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 204
    Par défaut
    s'il vous plait il me reste seulement une requete.
    ma table contien les deux champs : username, notes


    le champs notes contien plusieurs note d'un éléve
    (apres avoir untiliser la requette group_concat sur une table,)

    par exemple le champ notes contien cette valeur * 20,18,15.5,15,14,10,6

    je veux extraire la note 15.5 , SUBSTRING_INDEX( username, ",", 2 ) ne peux pas extraire au milieu. car ça peut etre la note au milieu 15 ou bien 15.5

    et je veux une requette pour l'executer sur lea table

    s'il vous plait comment faire?

Discussions similaires

  1. [Dates] Calculer la date de naissance à partir de l'âge
    Par Tony93700 dans le forum Langage
    Réponses: 2
    Dernier message: 15/06/2007, 15h08
  2. Réponses: 4
    Dernier message: 05/04/2007, 13h20
  3. Calcul de note puis moyenne
    Par kOrt3x dans le forum Ada
    Réponses: 7
    Dernier message: 06/11/2006, 10h24
  4. [MySQL] Calcul d'un taux à partir d'une boucle while
    Par zana74 dans le forum PHP & Base de données
    Réponses: 32
    Dernier message: 14/08/2006, 19h16
  5. Logiciel pour calculer le flot maximal
    Par Yakurena dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 05/03/2006, 12h47

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