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

  1. #1
    Nouveau membre du Club
    Requête rang: Prise en compte des paramètres classe et matières
    Bonsoir le forum!
    Je cherche à classer des élèves selon la moyenne obtenue par matière et par classe.. La source est une table T_MM_calculee qui stocke les moyennes par
    matières des élèves de toutes les classes
    Comment améliorer cette requête pour que ces deux critères (matière et classe) soient pris en compte?
    Code SQL :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T1.eleve_id, T1.classe_id, T1.matiere_id, T1.MM_calculee, (SELECT Count(MM_calculee) + 1   FROM T_calcul_MM AS T2  WHERE T2.MM_calculee>T1.MM_calculee) AS Rang
    FROM T_calcul_MM AS T1
    ORDER BY T1.MM_calculee DESC;


    djibysadji

    Merci

  2. #2
    Modérateur

    Bonjour
    Tu fais une première requête qui filtre les classes puis une seconde (celle que tu as proposée) basée sur cette première requête. Car avec ce que tu as fais, çà classe les élèves des toutes les classes.

    Pensons à améliorer nos compétences en toute humilité car aucune oeuvre faite par un humain n'est parfaite!!!

  3. #3
    Nouveau membre du Club
    Citation Envoyé par djibysadji Voir le message
    Bonsoir le forum!
    Je cherche à classer des élèves selon la moyenne obtenue par matière et par classe.. La source est une table T_MM_calculee qui stocke les moyennes par
    matières des élèves de toutes les classes
    Comment améliorer cette requête pour que ces deux critères (matière et classe) soient pris en compte?
    Code SQL :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T1.eleve_id, T1.classe_id, T1.matiere_id, T1.MM_calculee, (SELECT Count(MM_calculee) + 1   FROM T_calcul_MM AS T2  WHERE T2.MM_calculee>T1.MM_calculee) AS Rang
    FROM T_calcul_MM AS T1
    ORDER BY T1.MM_calculee DESC;


    djibysadji

    Merci
    Bonjour bertiny!
    J'ai essayé de suivre les étapes proposées mais j'ai toujours le même souci!
    J' ai fait une requête pour filtrer les classes:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    SELECT T_calcul_MM.classe_id
    FROM T_calcul_MM;

    Ensuite à partir de celle ci j'ai utilisé:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T1.eleve_id, T1.classe_id, T1.matiere_id, T1.MM_calculee, (SELECT Count(MM_calculee) + 1   FROM T_calcul_MM AS T2  WHERE T2.MM_calculee>T1.MM_calculee) AS Rang
    FROM T_calcul_MM AS T1
    ORDER BY T1.MM_calculee DESC;

    Alors que je veux avoir par exemple ceci
    Elève Classe Matière Moyenne Rang
    A 4ème A Français 16 1er
    B 4ème A Français 14 2ème
    C 6ème A Français 14 1er
    D 6ème A Français 12 2ème
    E 6ème A Français 11 3ème

    Merci

    djibysadji

  4. #4
    Modérateur

    Bonjour
    J'ai fais un truc comme çà:
    Code SQL :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T1.eleve_id, T1.classe_id, T1.matiere_id, (SELECT Count(MM_calculee) + 1 FROM T_calcul_MM AS T2 WHERE (T2.MM_calculee>T1.MM_calculee) and (T2.classe_id=T1.classe_id) and (T2.matiere_id=T1.matiere_id)) AS BRang, Classe.classe_id, IIf([BRang]=1,"er","ème") AS TRang, Matiere.intitule, Classe.Classe, T1.MM_calculee, [BRang] & [TRang] AS Rang
    FROM Matiere INNER JOIN (Classe INNER JOIN T_calcul_MM AS T1 ON Classe.classe_id = T1.classe_id) ON Matiere.Matiere_id = T1.matiere_id
    ORDER BY Matiere.intitule DESC;


    Tu comprendras mieux avec la base exemple

    Pensons à améliorer nos compétences en toute humilité car aucune oeuvre faite par un humain n'est parfaite!!!

  5. #5
    Nouveau membre du Club
    Citation Envoyé par bertiny Voir le message
    Bonjour
    J'ai fais un truc comme çà:
    Code SQL :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT T1.eleve_id, T1.classe_id, T1.matiere_id, (SELECT Count(MM_calculee) + 1 FROM T_calcul_MM AS T2 WHERE (T2.MM_calculee>T1.MM_calculee) and (T2.classe_id=T1.classe_id) and (T2.matiere_id=T1.matiere_id)) AS BRang, Classe.classe_id, IIf([BRang]=1,"er","ème") AS TRang, Matiere.intitule, Classe.Classe, T1.MM_calculee, [BRang] & [TRang] AS Rang
    FROM Matiere INNER JOIN (Classe INNER JOIN T_calcul_MM AS T1 ON Classe.classe_id = T1.classe_id) ON Matiere.Matiere_id = T1.matiere_id
    ORDER BY Matiere.intitule DESC;


    Tu comprendras mieux avec la base exemple
    Bonsoir bertiny!
    Bravo et merci beaucoup pour la solution. Je l'ai testée par rapport à ma base et ça fonctionne.

    djibysadji

###raw>template_hook.ano_emploi###