|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 17 ![]() |
Bonjour à tous,
je vous expose mon problème : il s'agit de classer de façon automatique dans une table la liste des personnes ayant les meilleures notes et ce , par groupe. Coté client : une page WEB pour saisir les notes pour chaque personne pour un groupe bien précis. Coté base de données : une table avec un champ groupe, un identifiant, les 4 champs de chacune des notes, 4 champs pour chaque note multipliée par son coef, une colonne total des notes multipliées par le coef et une colonne classement pour permettre par la suite de n'extraire de cette table que ceux qui sont premier. Les notes sont modifiées de façon permanente pendant l'année. J'ai créer un TRIGGER BEFORE pour le calcul des notes avec leur coef respectif et le calcul du total... Ce que je voudrais, c'est de trouver le moyen de refaire le classement à chaque modification des notes dans un même groupe de personne. Merci de votre aide Ps : pour le moment, ce classement se fait coté client en asp avec maj de la colonne.( select * from t_note order by total puis update pour chaque ligne) |
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : août 2005 Messages : 68 ![]() |
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 17 ![]() |
|
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 17 ![]() |
Voici la structure de la table
ID_NOTE NOT NULL NUMBER(10) ID_GROUPE NOT NULL NUMBER(10) NOTE_C1 NUMBER(2) NOTE_C1_COEF NUMBER(2) NOTE_C2 NUMBER(2) NOTE_C2_COEF NUMBER(2) NOTE_C3 NUMBER(2) NOTE_C3_COEF NUMBER(2) NOTE_C4 NUMBER(2) NOTE_C4_COEF NUMBER(2) TOTAL_NOTE NUMBER(10) CLASSEMENT NUMBER(2) COMMENTAIRE VARCHAR2(350) |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : août 2005 Messages : 68 ![]() |
ouh la ...
Je te suggère de faire une recherche sur "mutating table" ou "table mutante" dans le forum, la faq, les tutos, etc avant de te lancer. Perso, je ne mettrais pas le classement dans la même table, c'est trop compliqué à gérer par trigger. S'il faut vraiment que ce soit dans la même table, je ferais une procedure stockée lancée régulièrement par batch ou job pour recalculer le classement. |
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() dba Inscription : juillet 2007 Messages : 2 523 ![]() |
Pourquoi tu ne fais pas une bête vue pour avoir un ordre, voir même pour calculer les notes ?
Si ta table est vraiment énorme, tu peux opter pour une vue matérialisé que tu mets à jour après des ajouts dans ta table. |
|
|
00
|
|
|
#7 | |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 17 ![]() |
Citation:
Merci |
|
|
|
00
|
|
|
#8 | |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 17 ![]() |
Citation:
Je ne sais pas ce qu'est une vue "matérialisée" mais je vais me renseigner merci |
|
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 17 ![]() |
J'ai créé une autre table avec un trigger sur ma table notation
Merci à tous |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com