Bonjour à tous
Je penche sur un problème délicat.. Je cherche désespérément et teste plusieurs choses depuis ce matin, mais rien de fort concluant..
Je possède cette table "CONTRAT" (c'est une table d'essai, mais qui me sert pour faciliter l'explication ici, et le principe est le même que la table principale que je souhaite manipuler) :
L'idée serait par exemple d'insérer la valeur "OUI" dans la colonne "COLSUP" lorsque la ligne courante possède le libellé "00Cession" et lorsque l'ID client vaut "5".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 NUM LIBELLE ID_CLIENT COLSUP --------- -------------------- ---------- ----------- 1 00Location 1 6 00Vente 3 7 00Cession 5
/!\ IMPORTANT : Je ne veux pas faire quelque chose dans le style "...WHERE Libelle='00Cession' AND ID_client='5';" .. Ca serait trop simple Je recherche bien à le faire de manière conditionnelle (car la table finale que je dois manipuler comporte beaucoup de condition etc.. /!\
Imaginez que la table comporte beaucoup de lignes (ici c'est juste pour l'exemple).
J'ai donc créé cette requête, par le moyen de la fonction "decode" :
Théoriquement ça paraît correcte.. Mais le soucis c'est qu'Oracle travaille comme ceci (du moins je crois) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 UPDATE contrat set COLSUP=decode(LIBELLE,'00Cession',decode( (select ID_client from contrat where rownum<2),5,'OUI'));
Apparemment il passe toutes les lignes les unes après les autres, et une fois à la 3ème ligne, il trouve bien "00Cession"! Jusque là pas de soucis! Seulement au moment de regarder l'ID_CLIENT, c'est L'ID de la première ligne qu'il regarde! Je n'obtiens donc jamais le mot "OUI" dans la 3ème ligne de la colonne "COLSUP"...
Je me demande donc comment dire à Oracle de toujours faire le select sur la valeur courante de la ligne (et non pas de reprendre la première à chaque fois)..
Je pense que le "rownum<2" est en cause, mais je ne vois pas par quoi le remplacer... J'ai pu lire de virer le "rownum<2" pour mettre un distinct après mon select, mais toujours le même problème..
Merci beaucoup
Partager