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

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    février 2018
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : février 2018
    Messages : 243
    Points : 61
    Points
    61

    Par défaut Mise à jour dans une requête (curseur)

    Bonjour tout le monde, ça fait bien longtemps...

    je reviens vers vous en sollicitant vos aides

    j'ai une select qui me retroune ce qui suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AGENCE,CLIENT,MONTANT_ASSURANCE,COMMISSION,SOLDE_CLIENT
    j'ai besoin de faire une requête qui met à jour le à chaque fois selon la formule suivante :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SOLDE_CLIENT = SOLDE_CLIENT - (MONTANT_ASSURANCE+COMMISSION);
    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    AGENCE,CLIENT,MONTANT_ASSURANCE,COMMISSION,SOLDE_CLIENT
    01   A002    2000     200      58200 << SOLDE_CLIENT initiale
    01   A002    1800     200      54000
    01   A002    900       100      52000
    01   A003    900       100      8000 << autre client
    01   A003    800       200      7000
    .
    .
    .
    merci d'avance

  2. #2
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    février 2018
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : février 2018
    Messages : 243
    Points : 61
    Points
    61

    Par défaut

    ma question est aussi difficile? ou ambiguë ?

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    février 2018
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : février 2018
    Messages : 243
    Points : 61
    Points
    61

    Par défaut

    je reformule ma question, espérant que ça va vous éclaircir l'idée.

    ici je cherche à trouvé le SOLDE du client par rapport à la ligne précédente comme suit :

    SOLDE_CLIENT =
    SOLDE_CLIENT - (MONTANT_ASSURANCE+COMMISSION) : de la ligne précédente


    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    AGENCE, CLIENT, MONTANT_ASSURANCE,  COMMISSION,   SOLDE_CLIENT
    01        A002       2000     200           58200 << SOLDE_CLIENT initiale 
    01        A002       1800     200           54000
    01        A002       900       100           52000
    01        A003       900       100           8000 << autre client
    01        A003       800       200           7000

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    8 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 8 069
    Points : 26 018
    Points
    26 018

    Par défaut

    Première question :
    Comment identifie-t-on la ligne précédente ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    février 2018
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : février 2018
    Messages : 243
    Points : 61
    Points
    61

    Par défaut

    étant donné que les lignes sont insérées dans une table Ma_table

    donc je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select AGENCE,CLIENT,MONTANT_ASSURANCE,COMMISSION,SOLDE_CLIENT
    from Ma_table
    order by COMMISSION asc
    il se peut qu'il y'ait un client avec plusieurs lignes (plusieurs commissions) donc je doit récupérer son SOLDE intial (avec un fonction) et à partir de ce SOLDE je compare si il couvre la commission j'insère dans une autre sinon j'insère dans une autre table.

    donc par exemple si le client a comme solde initial 100 EURO et il a 4 commssions comme suit

    commission 01 de 20 €
    commission 02 de 30 €
    commission 03 de 50 €
    commission 04 de 80 €

    ici le tableau va s'afficher ainsi :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    100   20   il couvre OK       insert into T1
    80    30   il couvre OK	      insert into T1
    50    50   il couvre ok	      insert into T1
    0   80   il couvre pas NON  insert into T2

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Ingénieur d'études décisionnel
    Inscrit en
    mai 2002
    Messages
    8 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur d'études décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 8 069
    Points : 26 018
    Points
    26 018

    Par défaut

    Je reformule la question :
    Quelle est l'information dans la table qui me permet d'identifier de manière unique et répétable quelle est la dernière valeur du solde, celle sur laquelle on se basera pour calculer le nouveau solde ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    février 2018
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : février 2018
    Messages : 243
    Points : 61
    Points
    61

    Par défaut

    oui oui, le solde initial pour chaque client à partir de ce dernière on poursuit le calcul

  8. #8
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    février 2018
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : février 2018
    Messages : 243
    Points : 61
    Points
    61

    Par défaut

    Citation Envoyé par LandGreen Voir le message
    oui oui, le solde initial pour chaque client à partir de ce dernière on poursuit le calcul


    Aussi, la première valeur est récupérée via une fonction, je dis bien la première valeur du solde pour chaque client

  9. #9
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    juillet 2003
    Messages
    4 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : juillet 2003
    Messages : 4 283
    Points : 6 909
    Points
    6 909
    Billets dans le blog
    3

    Par défaut

    Quel est le problème que tu rencontres, car tu as donné l'algorithme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Boucle 
     le client couvre OK       insert into T1
     sinon insert into T2
    fin boucle
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB

  10. #10
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    février 2018
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : février 2018
    Messages : 243
    Points : 61
    Points
    61

    Par défaut

    Citation Envoyé par McM Voir le message
    Quel est le problème que tu rencontres, car tu as donné l'algorithme
    le problème ici c'est :

    comment récupérer le nouveau solde à partir de la commission du ligne précédente pour le même client

  11. #11
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    février 2018
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : février 2018
    Messages : 243
    Points : 61
    Points
    61

    Par défaut

    alors mes amis? j'ai peut être mal expliqué?
    c'est quoi le problème !!

  12. #12
    Membre éprouvé
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    septembre 2016
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : septembre 2016
    Messages : 516
    Points : 958
    Points
    958

    Par défaut

    Bonjour,

    Une (grosse) partie du problème est que les colonnes fournies ne permettent pas d'ordonnancer de manière précise la '1ere' ligne.
    Est-ce qu'on peut s'appuyer sur une date ??

    Dès que ceci est défini le reste n'est qu'une formalité qui sera faite en 1 seule requête et sans faire de boucle :
    https://docs.oracle.com/cd/B19306_01...0.htm#i1327527
    Le savoir est une nourriture qui exige des efforts.

  13. #13
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    février 2018
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : février 2018
    Messages : 243
    Points : 61
    Points
    61

    Par défaut

    Citation Envoyé par Michel.Priori Voir le message
    les colonnes fournies ne permettent pas d'ordonnancer de manière précise la '1ere' ligne.
    order by CLIENT , COMMISSION ASC

    exemple :
    client001 5 €
    client001 6 €
    client001 7 €
    client002 7 €
    client002 7 €
    client003 5 €
    client003 5 €
    client003 7 €
    client004 2 €
    .
    .
    .
    .

  14. #14
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    juillet 2003
    Messages
    4 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : juillet 2003
    Messages : 4 283
    Points : 6 909
    Points
    6 909
    Billets dans le blog
    3

    Par défaut

    Avec une affectation de variable pour connaitre le client encours.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    declare
    v_client NUMBER := -1;
    BEGIN
     for rc IN (select client, montant from matable order by client)
     loop
       if v_client <> rc.client THEN 
        -- nouveau client
        v_client := rc.client -- on dit qu'on est sur ce client
      END IF;
      -- traitement  
    END LOOP;
    END;
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB

  15. #15
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    février 2018
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : février 2018
    Messages : 243
    Points : 61
    Points
    61

    Par défaut

    merci pour votre retour,
    mais mon problème est sur le traitement sur les SOLDES et COMMISSIONS,
    comment mettre à jour le solde d'un nouveau client à partir de la 2eme ligne
    je vous remercie encore.

  16. #16
    Membre éprouvé
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    septembre 2016
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : septembre 2016
    Messages : 516
    Points : 958
    Points
    958

    Par défaut

    Bonsoir,

    si l'ordre à prendre est la valeur du solde dans l'ordre croissant alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT AGENCE, CLIENT, MONTANT_ASSURANCE, COMMISSION, SOLDE_CLIENT
    , LAG (MONTANT_ASSURANCE) OVER (partition by CLIENT ordre by SOLDE_CLIENT asc) AS Lag_montant
    , LAG (COMMISSION) OVER (partition by CLIENT ordre by SOLDE_CLIENT asc) AS Lag_commission
    , SOLDE_CLIENT
      -LAG (MONTANT_ASSURANCE) OVER (partition by CLIENT ordre by SOLDE_CLIENT asc) 
      -LAG (COMMISSION) OVER (partition by CLIENT ordre by SOLDE_CLIENT asc)  as MARGE
    FROM le_nom_de_la_source
    devrait convenir


    ***EDIT***
    L'objectif est de faire un update ?
    De quelle colonne ?
    Comment savoir si l'update est déjà passé ???

    comment mettre à jour le solde d'un nouveau client à partir de la 2eme ligne
    Ben ça rejoint la question : comment détermine t'on la 1ere ligne ?

    ça m'a l'air du bricolage ta demande
    Le savoir est une nourriture qui exige des efforts.

  17. #17
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    février 2018
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : février 2018
    Messages : 243
    Points : 61
    Points
    61

    Par défaut

    L'objectif est de faire un update ?
    non l'objectif est de Mettre à jour le solde a chaque opération

    De quelle colonne ?
    on veut toujours Mettre à jour le solde par rapport aux commission précédente


    Comment savoir si l'update est déjà passé ???
    l’affichage de la colonne SOLDE on comparant avec COMMISSION de la ligne précédente

    Ben ça rejoint la question : comment détermine t'on la 1ere ligne ?
    dès que on a un nouveau client nous avons la fonction qui nu récupère son solde

    Merci

  18. #18
    Membre éprouvé Avatar de Cincinnatus
    Homme Profil pro
    Développeur Java
    Inscrit en
    mars 2007
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : mars 2007
    Messages : 394
    Points : 1 032
    Points
    1 032

    Par défaut

    Citation Envoyé par LandGreen Voir le message
    non l'objectif est de Mettre à jour le solde a chaque opération
    update = mise à jour


    Citation Envoyé par LandGreen Voir le message
    l’affichage de la colonne SOLDE on comparant avec COMMISSION de la ligne précédente
    C'est effectué ligne par ligne ? Comparaison visuelle ?

    Citation Envoyé par LandGreen Voir le message
    dès que on a un nouveau client nous avons la fonction qui nu récupère son solde
    Quel est l'événement déclencheur ?

  19. #19
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    février 2018
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : février 2018
    Messages : 243
    Points : 61
    Points
    61

    Par défaut

    Citation Envoyé par Cincinnatus Voir le message
    update = mise à jour
    le solde initial sera récupérer pour chaque client, donc si on a par exemple un client qui a une seul commission on travaille seulement avec le solde initial, i.r le solde initial sera utilisé uniquement pour la 1ere ligne, pour le reste des ligne il dépendra du résultat de SOLDE-COMMISSION.


    C'est effectué ligne par ligne ? Comparaison visuelle ?
    oui


    Quel est l'événement déclencheur ?
    j'ai une vue qui récupère les lignes dont on veut effectuer les traitement.

  20. #20
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    juillet 2003
    Messages
    4 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : juillet 2003
    Messages : 4 283
    Points : 6 909
    Points
    6 909
    Billets dans le blog
    3

    Par défaut

    On est en plsql.. faut développer, utilises des variables compteurs, initialisés à 1 au changement de client, puis tu comptes les lignes, fais des sommes etc..
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/04/2014, 11h24
  2. Insertion d'une mise à jour dans une création de vue
    Par Ptite_Tigresse dans le forum Langage SQL
    Réponses: 0
    Dernier message: 30/08/2007, 12h34
  3. Réponses: 2
    Dernier message: 14/05/2007, 10h45
  4. Mise à jour dans une table
    Par manucha dans le forum Oracle
    Réponses: 4
    Dernier message: 01/03/2007, 11h11
  5. Mise à jour d'une requête jointe
    Par freud dans le forum Bases de données
    Réponses: 1
    Dernier message: 19/02/2007, 08h47

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