SQL oracle - обновить один столбец на основе нескольких условий - PullRequest
0 голосов
/ 03 мая 2018

Я хочу обновить записи на основе нескольких условий. Мое обновление игнорирует условия (и обновления для всех записей, где doctype = 7).

UPDATE DOCUMENTS SET DOCTYPE = '2'
Where DOCTYPE IN (Select C.DOCTYPE
From
    CLIENTS A,
    AGREEMENTS B,
    DOCUMENTS C
where
    A.ID = B.CUSTOMERID
    and B.ID = C.AGREEMENTID
    and C.STATUS = 1
    and B.STATUS = 1
    and A.STATUS = 1
    and C.DOCTYPE = '7')

Но select на себя возвращает то, что я хочу. Что я сделал не так в обновлении?

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Вам также необходимо связать вашу целевую таблицу «ДОКУМЕНТЫ» с подзапросом. Попробуйте ниже и проверьте, надеюсь, решит ваши проблемы.

UPDATE DOCUMENTS S SET DOCTYPE = '2'
Where (DOCTYPE,AGREEMENTID) IN (Select C.DOCTYPE,C.AGREEMENTID
From
    CLIENTS A,
    AGREEMENTS B,
    DOCUMENTS C
where
    A.ID = B.CUSTOMERID
    and B.ID = C.AGREEMENTID
    and C.STATUS = 1
    and B.STATUS = 1
    and A.STATUS = 1
    and C.DOCTYPE = '7')
and S.STATUS = 1
and S.DOCTYPE = '7'
0 голосов
/ 03 мая 2018

Вам необходимо отфильтровать на основе Documents.ID, попробуйте, как показано ниже:

UPDATE DOCUMENTS SET DOCTYPE = '2'
Where ID IN (Select C.ID
From
    CLIENTS A,
    AGREEMENTS B,
    DOCUMENTS C
where
    A.ID = B.CUSTOMERID
    and B.ID = C.AGREEMENTID
    and C.STATUS = 1
    and B.STATUS = 1
    and A.STATUS = 1
    and C.DOCTYPE = '7')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...