MS ACCESS: Calcul du rang en fonction de plusieurs critères
DJISA_70
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai table T_NOTE qui contient toutes les notes par matière de toutes les classes. Je voudrais dans une requête faire le classement en fonction de la matière et de la classe.
J'ai table T_NOTE qui contient toutes les notes par matière de toutes les classes. Je voudrais dans une requête faire le classement en fonction de la matière et de la classe.
Configuration: Windows / Chrome 97.0.4692.99
A voir également:
- MS ACCESS: Calcul du rang en fonction de plusieurs critères
- Acer quick access - Forum Logiciels
- Access appdata - Guide
- Exemple base de données access à télécharger gratuit - Forum Access
- Exemple base de données Access de gestion ✓ - Forum Logiciels
- Quick acces ✓ - Forum Windows
10 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
peut-être
peut-être
select t1.id,t1.m, t1.c, t1.nt, count(t2.nt) +1 as cl from T_NOTE as t1 left join T_NOTE as t2 on t1.m=t2.m and t1.c=t2.c and t1.nt<t2.nt group by t1.id,t1.m, t1.c, t1.nt order by t1.c, t1.m, t1.nt desc
Bonjour yg_be!
Est_ce que m=matière, c=classe, nt=note et id=PK de la table T_NOTE?
Merci pour la réponse. Nous entendons la confirmation pour essayer votre requête.
Est_ce que m=matière, c=classe, nt=note et id=PK de la table T_NOTE?
Merci pour la réponse. Nous entendons la confirmation pour essayer votre requête.
Re_Bonjour yg_be
Dans votre requête j'ai essayé d'intégrer la composante élève et j'ai ceci:
select t1.Note_id, t1.Eleve_id, t1.Matiere_id, t1.Classe_id, t1.Note, count(t2.Note) +1 as CL
from T_NOTES as t1 left join T_NOTES as t2
on t1.Eleve_id=t2.Eleve_id, t1.Matiere_id=t2.Matiere_id and t1.Classe_id=t2.Classe_id and t1.Note<t2.Note
group by t1.Note_id, t1.Eleve_id, t1.Matiere_id, t1.Classe_id, t1.Note
order by t1.Classe_id, t1.Eleve_id, t1.Matiere_id, t1.Note_id desc
Mais une boite de dialogue me notifie: "Expression JOIN non supportée".
Pour y voir plus clair, je vous donne les champs de la table T_Notes:
Note_id (PK)
Eleve_id (FK)
Classe_id (FK)
Matiere_id (FK)
Note (numérique)
Dans votre requête j'ai essayé d'intégrer la composante élève et j'ai ceci:
select t1.Note_id, t1.Eleve_id, t1.Matiere_id, t1.Classe_id, t1.Note, count(t2.Note) +1 as CL
from T_NOTES as t1 left join T_NOTES as t2
on t1.Eleve_id=t2.Eleve_id, t1.Matiere_id=t2.Matiere_id and t1.Classe_id=t2.Classe_id and t1.Note<t2.Note
group by t1.Note_id, t1.Eleve_id, t1.Matiere_id, t1.Classe_id, t1.Note
order by t1.Classe_id, t1.Eleve_id, t1.Matiere_id, t1.Note_id desc
Mais une boite de dialogue me notifie: "Expression JOIN non supportée".
Pour y voir plus clair, je vous donne les champs de la table T_Notes:
Note_id (PK)
Eleve_id (FK)
Classe_id (FK)
Matiere_id (FK)
Note (numérique)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
La requête, telle que vous l'avez proposée, marche. Je constate aussi un champ dénommée Expr1000 qui fait référence aux identifiants des matières.
Mais j'aimerais bien pouvoir intégrer la composante élève?
Mais j'aimerais bien pouvoir intégrer la composante élève?
La requête que j'ai essayée donne le même rang partout
SELECT t1.Note_id, t1.Eleve_id, t1.Matiere_id, t1.Classe_id, t1.Note, Count(t2.Note)+1 AS cl
FROM T_NOTES AS t1
LEFT JOIN T_NOTES AS t2 ON (t1.Classe_id = t2.Classe_id) AND (t1.Matiere_id = t2.Matiere_id) AND (t1.Eleve_id = t2.Eleve_id)
GROUP BY t1.Note_id, t1.Matiere_id, t1.Classe_id, t1.Note, t1.Eleve_id
ORDER BY t1.Classe_id, t1.Matiere_id, t1.Note DESC;
La requête qui fonctionne mais sans la composante élève
SELECT t1.Note_id, t1.Matiere_id, t1.Classe_id, t1.Note, Count(t2.Note)+1 AS cl
FROM T_NOTES AS t1
LEFT JOIN T_NOTES AS t2 ON (t1.Classe_id = t2.Classe_id) AND (t1.Matiere_id = t2.Matiere_id)
GROUP BY t1.Note_id, t1.Matiere_id, t1.Classe_id, t1.Note
ORDER BY t1.Classe_id, t1.Matiere_id, t1.Note DESC;
SELECT t1.Note_id, t1.Eleve_id, t1.Matiere_id, t1.Classe_id, t1.Note, Count(t2.Note)+1 AS cl
FROM T_NOTES AS t1
LEFT JOIN T_NOTES AS t2 ON (t1.Classe_id = t2.Classe_id) AND (t1.Matiere_id = t2.Matiere_id) AND (t1.Eleve_id = t2.Eleve_id)
GROUP BY t1.Note_id, t1.Matiere_id, t1.Classe_id, t1.Note, t1.Eleve_id
ORDER BY t1.Classe_id, t1.Matiere_id, t1.Note DESC;
La requête qui fonctionne mais sans la composante élève
SELECT t1.Note_id, t1.Matiere_id, t1.Classe_id, t1.Note, Count(t2.Note)+1 AS cl
FROM T_NOTES AS t1
LEFT JOIN T_NOTES AS t2 ON (t1.Classe_id = t2.Classe_id) AND (t1.Matiere_id = t2.Matiere_id)
GROUP BY t1.Note_id, t1.Matiere_id, t1.Classe_id, t1.Note
ORDER BY t1.Classe_id, t1.Matiere_id, t1.Note DESC;