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   -
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.



Configuration: Windows / Chrome 97.0.4692.99

10 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
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
0
DJISA_70 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
en effet.
0
DJISA_70 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
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)
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
Essaie d'abord sans l'élève, et partage une requête qui fonctionne.
0
DJISA_70 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
OK
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DJISA_70 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
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?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
regarde bien la ligne ON avant et après ta modification.
0
DJISA_70 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
OK. Nous la revoyons.
0
DJISA_70 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
Je ne m'en sors pas!
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
montre ce que tu as essayé, ainsi que comment c'est dans la requête qui fonctionne.
0
DJISA_70 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
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;
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
Bien, tu as donc éliminé l'erreur que tu avais à 14:21.
Je ne comprends pas comment la seconde requête "qui fonctionne" donne le rang correct. En es-tu certain?
0
DJISA_70 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour!
Je veux dire que la requête que vous avez proposée le 02/02/2022 à 11:33 fonctionne correctement mais je ne parviens pas à y intégrer le champ Eleve_id.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
Je ne comprends pas comment la seconde requête (2 févr. 2022 à 19:25) "qui fonctionne" donne le rang correct. En es-tu certain?
0
DJISA_70 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
Oui parfaitement.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
Je pense alors que tu n'as pas partagé la source complète de la requête.
0