MS ACCESS: Calcul du rang en fonction de plusieurs critères

Fermé
DJISA_70 Messages postés 10 Date d'inscription mardi 1 février 2022 Statut Membre Dernière intervention 3 février 2022 - 2 févr. 2022 à 00:24
yg_be Messages postés 23014 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 juillet 2024 - 3 févr. 2022 à 15:28
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
A voir également:

10 réponses

yg_be Messages postés 23014 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 juillet 2024 1 502
2 févr. 2022 à 11:33
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
DJISA_70 Messages postés 10 Date d'inscription mardi 1 février 2022 Statut Membre Dernière intervention 3 février 2022
2 févr. 2022 à 13:08
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.
yg_be Messages postés 23014 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 juillet 2024 1 502
2 févr. 2022 à 14:00
en effet.
0
DJISA_70 Messages postés 10 Date d'inscription mardi 1 février 2022 Statut Membre Dernière intervention 3 février 2022
2 févr. 2022 à 14:21
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)
yg_be Messages postés 23014 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 juillet 2024 1 502
2 févr. 2022 à 14:32
Essaie d'abord sans l'élève, et partage une requête qui fonctionne.
0
DJISA_70 Messages postés 10 Date d'inscription mardi 1 février 2022 Statut Membre Dernière intervention 3 février 2022
2 févr. 2022 à 14:33
OK

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

Posez votre question
DJISA_70 Messages postés 10 Date d'inscription mardi 1 février 2022 Statut Membre Dernière intervention 3 février 2022
Modifié le 2 févr. 2022 à 15:06
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?
yg_be Messages postés 23014 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 juillet 2024 1 502
2 févr. 2022 à 15:44
regarde bien la ligne ON avant et après ta modification.
0
DJISA_70 Messages postés 10 Date d'inscription mardi 1 février 2022 Statut Membre Dernière intervention 3 février 2022
2 févr. 2022 à 16:04
OK. Nous la revoyons.
DJISA_70 Messages postés 10 Date d'inscription mardi 1 février 2022 Statut Membre Dernière intervention 3 février 2022
2 févr. 2022 à 16:54
Je ne m'en sors pas!
yg_be Messages postés 23014 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 juillet 2024 1 502
2 févr. 2022 à 19:03
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 mardi 1 février 2022 Statut Membre Dernière intervention 3 février 2022
Modifié le 2 févr. 2022 à 19:27
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;
yg_be Messages postés 23014 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 juillet 2024 1 502
2 févr. 2022 à 23:35
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 mardi 1 février 2022 Statut Membre Dernière intervention 3 février 2022
3 févr. 2022 à 10:47
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.
yg_be Messages postés 23014 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 juillet 2024 1 502
3 févr. 2022 à 12:00
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 mardi 1 février 2022 Statut Membre Dernière intervention 3 février 2022
3 févr. 2022 à 15:18
Oui parfaitement.
yg_be Messages postés 23014 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 juillet 2024 1 502
3 févr. 2022 à 15:28
Je pense alors que tu n'as pas partagé la source complète de la requête.
0