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

Langage SQL Discussion :

update conditionnel sous oracle


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 3
    Points : 4
    Points
    4
    Par défaut update conditionnel sous oracle
    Bonjour a tous!
    J'ai envie de faire un UPDATE sur une colonne d'une table.
    en effet sur la table CLIENT il y a une colonne Dispo_credit.
    Je dois faire une augmentation de 75%sur les clients ayant 10000 euro ou plus et 25% pour les autres.
    Mais seuleument le client doit avoir achete plus d'une fois pour beneficier de l'augmentation.Or la table ARTICLE contient le champ dont j'ai besoin et est indirectement lie a la table client.
    bref je veux une combinaison du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     UPDATE CLIENT
    SET Dispo_Credit=case
    when Dispo_credit>=1000 then Dispo_credit+(Dispo_Credit*0.75)
    else then Dispo_Credit=Dispo_Credit+(Dispo_Credit*0.50)
    end
    from CLIENT c,ARTICLE a,
    having count(product_id)>1
    : etc
    brefCombiner
    1)UPDATE,CASE,SELECT,HAVING

    Merci d'avance

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Faîtes une requête UPDATE avec sous-requête corrélée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE ...
    SET ...
    WHERE EXISTS ( ... )
    ...
    Lisez les tutoriels de ce site, vous en apprendrez énormément !

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2004
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Update probleme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    SQL> update customer
      2  set credit_limit=case
      3  (select s.product_id,count(*)
      4  from customer c,sales_order s,item i
      5  where c.customer_id=s.customer_id
      6  and s.order_id=i.order_id
      7  group by product_id
      8  having count(*)>1)
      9  when credit_limit>=10000 then credit_limit+(credit_limit*0.75)
     10  when credit_limit>5000 and credit_limit<=7500 then credit_limit+(credit_limit*0.50)
     11  when credit_limit>2500 and credit_limit<=5000 then credit_limit+(credit_limit*0.25)
     12  when credit_limit<=2500 then credit_limit+(credit_limit*0.05)
     13  end;
    when credit_limit>=10000 then credit_limit+(credit_limit*0.75)
                     *
    ERROR at line 9:
    ORA-00905: missing keyword
    quelqu'un peut-il m'aider a corriger ce code

    Merci d'avance

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 392
    Points
    28 392
    Par défaut
    Quelque chose comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    UPDATE  client 
    SET dispo_credit = dispo_credit 
                        *   CASE WHEN dispo_credit >= 1000 THEN 1.75 ELSE 1.50 END
    WHERE   EXISTS  
            (   SELECT  1
                FROM    article AS a
                WHERE   client.idclient = a.idclient
                HAVING  COUNT(a.product_id) > 1
            )
    ;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/05/2009, 17h11
  2. Réponses: 2
    Dernier message: 03/07/2007, 23h37
  3. Pas de JOIN sous Oracle (vraiment dommage...)
    Par Isildur dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/03/2007, 11h28
  4. probleme inner and update sous oracle
    Par edw0000d dans le forum Oracle
    Réponses: 5
    Dernier message: 30/01/2007, 15h18
  5. Cryptage de colonnes sous Oracle
    Par Julian Roblin dans le forum SQL
    Réponses: 9
    Dernier message: 28/11/2006, 18h24

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