Что не так с моим заявлением об обновлении с объединением в Oracle?
Я работаю соракул База данных 10g.
У меня есть следующие две таблицы:
T_DEBTOR :
- ID_DEBTOR
- HEADER
T_ELEMENT :
- ID_ELEMENT
- ID_DEBTOR
- INSURER
Эти две таблицы объединяются с использованием поля ID_DEBTOR.
Я хочу обновить значение T_ELEMENT.INSURER с помощью связанного T_DEBTOR.HEADER, только если HEADER не равен NULL. Другими словами:
If T_DEBTOR.HEADER != null
Then T_ELEMENT.INSURER = T_DEBTOR.HEADER
Else T_ELEMENT.INSURER is not modified!
Я попытался использовать следующий запрос SQL:
update
T_ELEMENT elt
set elt.INSURER = (
select HEADER
from T_DEBTOR debtor
where
debtor.HEADER is not null
and debtor.ID_DEBTOR = elt.ID_DEBTOR);
Этот запрос работает для всех элементов, связанных с должниками, у которых HEADER не равен NULL. Однако, когда T_DEBTOR.HEADER имеет значение NULL, тогда этот запрос устанавливает T_ELEMENT.INSURER в NULL, что неверно.
то есть:
If T_DEBTOR.HEADER != null
Then T_ELEMENT.INSURER = T_DEBTOR.HEADER --> This part is OK
Else T_ELEMENT.INSURER is set to null --> This part is NOT OK
Что не так с моим запросом?
Отредактируйте относительно ответа Брайана Сторрара:
Что я хочу сделать, это что-то вроде этого:
update
T_ELEMENT elt
set elt.INSURER = (
select HEADER
from T_DEBTOR debtor
where
debtor.HEADER is not null
and debtor.ID_DEBTOR = elt.ID_DEBTOR)
where debtor.HEADER is not null;