Bonjour,
Je précise que je travaille sur une base ORACLE.
Pour simplifier, j'ai 2 tables avec les colonnes suivantes :
table T_DEBITEUR :
- ID_DEBITEUR
- HEADER
table T_ELEMENT :
- ID_ELEMENT
- ID_DEBITEUR
- ASSUREUR
Les éléments de la table T_ELEMENT et T_DEBITEUR sont liés par l'ID_DEBITEUR.
Je veux mettre à jour la valeur de T_ELEMENT.ASSUREUR avec la valeur de T_DEBITEUR.HEADER associé seulement si T_DEBITEUR.HEADER n'est pas NULL. Autrement dit :
Si T_DEBITEUR.HEADER != null
alors T_ELEMENT.ASSUREUR = T_DEBITEUR.HEADER
sinon T_ELEMENT.ASSUREUR reste inchangé.
J'ai tenté cette requête :
Cette requête met bien à jour les élements qui sont liés à un DEBITEUR dont l'HEADER n'est pas NULL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 update T_ELEMENT elt set elt.ASSUREUR = ( select HEADER from T_DEBITEUR debiteur where debiteur.HEADER is not null and debiteur.ID_DEBITEUR = elt.ID_DEBITEUR);
Par contre, si le DEBITEUR a HEADER = NULL, alors l'ELEMENT associé va voir son champ ASSUREUR passé à NULL, alors que je souhaiterais qu'il soit inchangé.
Autrement dit, ce que fait cette requête :
Si T_DEBITEUR.HEADER != null
alors T_ELEMENT.ASSUREUR = T_DEBITEUR.HEADER (C'est bon)
sinon T_ELEMENT.ASSUREUR = null (PAS BON).
Comment puis-je corriger ma requête pour faire correctement ce que je veux ?
Partager