2016-02-02 2 views
0

Ребята У меня такая проблема.Преобразование оператора выбора PLSQL в обновление

Я знаю, как написать хороший оператор выбора, но я понятия не имею, как превратить его в соответствующее обновление.

Im PLSQL все еще учусь

Вот мой выбор

select * --count(*) 
from POLISY_OT ot 
    join polisy p on p.poli_id = ot.ot_poli_id 
    join sou.rai_skl rs on rs.ot_id = ot.ot_id 
where ot_under_promil = 0 
    and ot_skladka_rok <> ot_skladka_netto_rok 
    and ot_rodzaj_um = 'OP' 
    and ot_rodzaj = 'D' 
    and ot_produkt_id = 17 
    and p.poli_status in ('AK', 'CZ') 
    and rs.skl_roczna = ot.ot_skladka_rok; 

теперь я хотел бы, чтобы обернуть его с обновлением и создать что-то вроде этого

update (
    select * --count(*) 
    from POLISY_OT ot 
    join polisy p on p.poli_id = ot.ot_poli_id 
    join sou.rai_skl rs on rs.ot_id = ot.ot_id 
    where ot_under_promil = 0 
    and ot_skladka_rok <> ot_skladka_netto_rok 
    and ot_rodzaj_um = 'OP' 
    and ot_rodzaj = 'D' 
    and ot_produkt_id = 17 
    and p.poli_status in ('AK', 'CZ') 
    and rs.skl_roczna = ot.ot_skladka_rok) 
    set ot_skladka_rok = ot_skladka_netto_rok; 
+0

http://docs.oracle.com/javadb/10.8.3.0/ref/rrefsqlj26498 .html –

ответ

0

Во-первых, я действительно надеюсь, что вы не студент, просящий домашнюю работу. Это действительно ошибка меня.

В предположении, что это не так, трудно точно указать, какие столбцы принадлежат к каким таблицам, учитывая, что вы не включили псевдонимы таблицы повсюду.

Я читал это как то, что вы хотели обновить столбец на основе значения в другой таблице, ограничив обновление таблицы для записей, соответствующих третьей таблице).

Так что я думаю, что вы хотите что-то вроде этого:

UPDATE polisy_ot ot 
    SET ot_skladka_rok = 
     (SELECT ot_skladka_netto_rok 
      FROM sou.rai_skl rs 
     WHERE rs.ot_id = ot.ot_id 
      AND rs.skl_roczna = ot.ot_skladka_rok) 
WHERE ot_under_promil = 0 
    AND ot_skladka_rok <> ot_skladka_netto_rok 
    AND ot_rodzaj_um = 'OP' 
    AND ot_rodzaj = 'D' 
    AND ot_produkt_id = 17 
    AND EXISTS (SELECT NULL 
      FROM polisy p 
     WHERE p.poli_id = ot.ot_poli_id 
      AND p.poli_status IN ('AK', 'CZ')) 

удачи,

Рагу

+0

Большое вам спасибо. Я не хочу использовать кого-либо, кого я просто хочу чему-то научиться :) –

+0

Итак, это «и существует» - это способ, которым вы обошли факт, что мы не можем использовать заявление о соединении в этой точке? Ницца. –

+0

Рад, что это сработало для вас. Пожалуйста, отметьте мой ответ как правильный, и на ваш вопрос ответили, поэтому я могу получить кредит репутации. – StewS2

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