IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

[Trigger] Somme de différentes lignes


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 31
    Points : 24
    Points
    24
    Par défaut [Trigger] Somme de différentes lignes
    Bonjour,

    Je souhaiterai savoir s'il est possible de réaliser un trigger (ou peut-être autre chose) permettant de remplir le champ "pourcentage" d'une table, mais celui ci est calculé en fonction de la somme de plusieurs champ "nombre" des lignes qui sont insérées.

    Pour être plus clair, lorsque j'insère des nouvelles données dans ma table, je dois déclencher une action pour calculer tout de suite le pourcentage. Le pourcentage se calculant en fonction d'un nombre total, je dois récupèrer un ensemble de valeurs pour les sommer.

    Le trigger s'exécutant après l'insertion de chaque ligne, j'ai du mal à voir comment je pourrais réaliser ma somme.

    Merci pour votre aide

  2. #2
    Membre habitué
    Inscrit en
    Septembre 2006
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 142
    Points : 170
    Points
    170
    Par défaut
    J'ai une solution pour le autre chose

    Si tu maitrises le schéma tu peux essaye avec une vue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    create or replace view matablepourcentage 
       select a.champ1, a.champ2, a.champ3*100/b.somme as pourcentage
       from matable a, (select sum(champ3) as somme from matable) b
    et donc lorsque tu as besoin des pourcentages tu interroges ta vue.
    DBA ORACLE

  3. #3
    Membre habitué
    Inscrit en
    Août 2006
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 181
    Points : 166
    Points
    166
    Par défaut
    comment tu veux recuperer ton pourcentage ? tu vas l'inserer qq part ?

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par Arturius
    J'ai une solution pour le autre chose

    Si tu maitrises le schéma tu peux essaye avec une vue.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    create or replace view matablepourcentage 
       select a.champ1, a.champ2, a.champ3*100/b.somme as pourcentage
       from matable a, (select sum(champ3) as somme from matable) b
    et donc lorsque tu as besoin des pourcentages tu interroges ta vue.

    ou avec les analytiques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select champ1,champ2,champ3,ratio_to_report(champ3) over () from matable;
    mais tu ne peux faire ça avec un trigge. En effet, chaque nouvelle ligne changera le pourcentage de chaque ligne, non?

    Fait donc vue, voire matérialisée.

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2006
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 142
    Points : 170
    Points
    170
    Par défaut
    Je ne le stock pas il est calculé à chaque interrogation de la vue. Donc c'est dynamique en fonction du contenu de la table à l'instant ou la requête est lancé.

    Donc effectivement à chaque requête le calcule est effectué. Ce qui si la table est monstrueuse va être lamentable en temps de reponse mais sur une petite volumétrie doit fonctionner.

    Le truc c'est de ne pas stocké le pourcentage puis que toutes les données sont présente dans la base pour le calculer à chaque requête.
    DBA ORACLE

  6. #6
    Membre habitué
    Inscrit en
    Septembre 2006
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 142
    Points : 170
    Points
    170
    Par défaut
    Oui effectivement la vue matérialisée peut compensé le problème de performance.

    Un jour quand même il faudra que je regarde les fonctions analytiques
    DBA ORACLE

Discussions similaires

  1. [AC-2013] Somme de champs contenus sur différentes lignes de formulaires contigus
    Par Defaultuser01 dans le forum Access
    Réponses: 18
    Dernier message: 02/04/2014, 21h18
  2. [XL-2007] Dispatcher somme sur différentes lignes ?
    Par asaliah13 dans le forum Excel
    Réponses: 4
    Dernier message: 05/01/2014, 09h05
  3. trigger delete pour plusieurs lignes
    Par Shabata dans le forum Langage SQL
    Réponses: 6
    Dernier message: 30/09/2009, 01h00
  4. Comment récuperer les différentes lignes d'une requête ?
    Par frikazoide dans le forum Langage SQL
    Réponses: 5
    Dernier message: 25/01/2007, 08h33
  5. somme sur plusieurs lignes d'un dbgrid
    Par pierrot67 dans le forum Bases de données
    Réponses: 11
    Dernier message: 11/07/2006, 10h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo