2017-02-18 2 views
0

Может ли кто-нибудь помочь в получении этого запроса для работы. Я пытаюсь обновить статус столбца в таблице, присоединившись к другим таблицамПроблемы с обновлением запроса с внутренним соединением

Вот в запросе

update 
(select I.account_id, I.sts, I.name_id, CI.CRM_TYPE, I.comments 
    from PPInters I 
     inner join DW.CUST CT 
     on I.account_id = CT.account_id 
     where 
      I.sts is null 
      AND I.comments IS NOT NULL 
      AND CT.CUSTTYPe = 'INTNL') T 

SET T.STS = 'D' 

WHERE T.account_id IN (2000208927,380166014,190180447,166078041,105029075 ) 

Я получаю «ORA-01779: не может изменить столбец, который отображает на не ключ -preserved стол»ошибка

То, что я пытаюсь сделать здесь, чтобы набор I.STS =„D“ для некоторых 700 записей подъехала, используя этот запрос

select I.account_id, I.sts, I.name_id, CI.CRM_TYPE, I.comments 
      from PPInters I 
       inner join DW.CUST CT 
       on I.account_id = CT.account_id 
       where 
        I.sts is null 
        AND I.comments IS NOT NULL 
        AND CT.CUSTTYPe = 'INTNL' 

Я ценю это

+0

Что такое 'CI' псевдоним таблицы в ваш пункт 'select'? – mathguy

ответ

1

Assumming что account_id является первичным ключом kolumn в таблице PPInters,
, что это значение однозначно идентифицирует записи в этой таблице:

UPDATE PPInters 
SET STS = 'D' 
WHERE account_id IN (

      select I.account_id 
       /*, I.sts, I.name_id, CI.CRM_TYPE, I.comments */ 
      from PPInters I 
       inner join DW.CUST CT 
       on I.account_id = CT.account_id 
       where 
        I.sts is null 
        AND I.comments IS NOT NULL 
        AND CT.CUSTTYPe = 'INTNL' 

) 
AND account_id IN (2000208927,380166014,190180447,166078041,105029075 ) 
+0

Это работает - Большое спасибо –

Смежные вопросы