|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : août 2007 Messages : 17 ![]() |
Bonjour,
Je cherche a mettre à jour une table complete en une seule fois. Voici mon problème. Si une colonne A est remplie alors je mets a jour cette colonne A plus une colonne B Si une colonne C est remplie alors je mets à jour cette colonne B plus une colonne D Si une colonne E est remplie alors je mets à jour cette colonne B plus une colonne F Je me suis lancé dans l'écriture de cette requete et voici ou j'en suis rendu (ce n'est qu'une ebauche): UPDATE TOTO SET (case when Col_1 is not null then Col_3 else Col_2) = 'toto007' where toto_id = 6663; Je me doute que cela ne marche pas comme ça mais vous saisissez l'idée. Est ce que je peux m'en sortir avec mon update et mon case? |
|
|
00
|
|
|
#2 | ||
|
Membre éprouvé
![]() Inscription : décembre 2007 Messages : 354 ![]() |
Je ne suis pas sûr d'avoir compris notamment quelles sont les valeurs à utiliser pour mettre à jour!
Code :
|
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : août 2007 Messages : 17 ![]() |
j'essaie de clarifier mon probleme
imaginons que j'ai 6 colonnes dans ma table col_A | col_B | col_c | col_d | col_e | col_f Les colonnes A,B et C sont les colonnes sur lesquelles je veux effectuer mon test de nulité. Les colonnes D,E,F sont les colonnes que je veux remplir selon le test précédent avec une valeur prédéfini Donc par ex si la valeur que je veux insérer est 'TEST007' : hypotheses: Si A est non nul par conséquent B & C sont nuls D E F sont nuls Si A est non nul alors je veux mettre 'TEST007' dans la colonne D et vider la colonne A J'espère que mes explications sont un peu plus claire |
|
|
00
|
|
|
#4 | ||
|
Membre éprouvé
![]() Inscription : décembre 2007 Messages : 354 ![]() |
Cette explication est partielle et même contradictoire avec la première demande mais je vais me limiter à ce qui est dedans
Code :
|
||
|
|
00
|
|
|
#5 | |||
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 845 ![]() |
Citation:
__________________
Il est plus facile de voir les signes avant-coureurs après coup que l'inverse ! Yorglaa |
|||
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
le NVL ne permet pas de mettre NULL si c'est non NULL... eventuellement on peut faire un DECODE :
|
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : janvier 2008 Messages : 50 ![]() |
Il existe également la fonction NVL2 :
Code :
SELECT NVL2(expression, valeur si non NULL, valeur si NULL) FROM dual; |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com