Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/10/2007, 12h27   #1
Invité de passage
 
Inscription : juin 2007
Messages : 17
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 17
Points : 3
Points : 3
Par défaut TRIGGER AFTER pour classement

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)
RSI06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2007, 14h48   #2
Membre du Club
 
Inscription : août 2005
Messages : 68
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 68
Points : 68
Points : 68
Citation:
Envoyé par RSI06 Voir le message
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.
Ce se matérialise comment ce classement ?
Un champ dans la table que tu es en train de mettre à jour ? ou une autre table ?
xavi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2007, 14h58   #3
Invité de passage
 
Inscription : juin 2007
Messages : 17
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 17
Points : 3
Points : 3
Citation:
Envoyé par xavi Voir le message
Ce se matérialise comment ce classement ?
Un champ dans la table que tu es en train de mettre à jour ? ou une autre table ?
C'est dans la même table
RSI06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2007, 15h00   #4
Invité de passage
 
Inscription : juin 2007
Messages : 17
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 17
Points : 3
Points : 3
Citation:
Envoyé par RSI06 Voir le message
C'est dans la même table
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)
RSI06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2007, 15h16   #5
Membre du Club
 
Inscription : août 2005
Messages : 68
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 68
Points : 68
Points : 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.
xavi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2007, 15h45   #6
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 972
Points : 3 972
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.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2007, 18h16   #7
Invité de passage
 
Inscription : juin 2007
Messages : 17
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 17
Points : 3
Points : 3
Citation:
Envoyé par xavi Voir le message
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.
Je vais passer par une autre table.
Merci
RSI06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2007, 18h22   #8
Invité de passage
 
Inscription : juin 2007
Messages : 17
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 17
Points : 3
Points : 3
Citation:
Envoyé par Jerome_Mtl Voir le message
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.
Une vue pour afficher un ordre ou calculer les notes ne me suffirait pas car il y a par la suite la nécessité de récupérer dans des pages WEB les noms des personnes qui sont classées 1 ou 2 ou 3 en fonction d'une liste de groupe.

Je ne sais pas ce qu'est une vue "matérialisée" mais je vais me renseigner

merci
RSI06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/10/2007, 09h53   #9
Invité de passage
 
Inscription : juin 2007
Messages : 17
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 17
Points : 3
Points : 3
Par défaut Résolu

J'ai créé une autre table avec un trigger sur ma table notation

Merci à tous
RSI06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h30.


 
 
 
 
Partenaires

Hébergement Web