Что не так с моим заявлением об обновлении с объединением в 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;

Ответы на вопрос(8)

Ваш ответ на вопрос