Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 сравнить записи из разных таблиц и вставить, если их нет  [new]
шышок
Guest
Помогите пожалуйста с анонимным блоком

BEGIN

for c in (select distinct(nvl(pc.concept_title,oo.outcome_output_descr)) as v_concept
from giant.projs p,
giant.appls a,
giant.award_notices an,
(select max(id_seq) seq, appl_id from giant.award_notices group by appl_id) sub,
giant.program_announcements pa,
igrant_sys.funding_memos_t fm,
igrant_sys.portfolio_programs_t pp,
igrant_sys.outcome_outputs_t oo
LEFT JOIN
(select max(concept_title) as concept_title, max(port_concept_id) as port_concept_id, outcome_output_id from igrant_sys.port_concepts_t group by outcome_output_id) pc
ON oo.outcome_output_id = pc.outcome_output_id
where a.prog_announcement_id is not null and
(p.end_date is null or p.end_date > SYSDATE) and
p.comp_appl_id = a.appl_id and
a.appl_id = an.appl_id and
an.id_seq = sub.seq and
an.appl_id = sub.appl_id and
pa.announcement_num = a.prog_announcement_id and
a.appl_id = fm.appl_id and
fm.outcome_output_id = oo.outcome_output_id and
oo.portfolio_program_id = pp.portfolio_program_id)
LOOP

FOR i IN (SELECT distinct(concept_title ) FROM igrant_sys.port_concepts_t)

LOOP
IF c_rec.v_concept <> i.concept_title THEN
insert into igrant_sys.port_concepts_t (concept_title)
values (c_rec.v_concept);
END IF;
END LOOP;
END LOOP;

commit;
END;
/

Мне нужно, чтобы записи вставлялись в таблицу по одному разу.
Большое спасибо
30 мар 11, 21:24    [10448481]     Ответить | Цитировать Сообщить модератору
 Re: сравнить записи из разных таблиц и вставить, если их нет  [new]
шышок
Guest
если кому интересно, то вот так получилось

insert
into igrant_sys.port_concepts_t (concept_title)
select distinct(nvl(pc.concept_title,oo.outcome_output_descr)) as v_concept
from giant.projs p,
giant.appls a,
giant.award_notices an,
(select max(id_seq) seq, appl_id from giant.award_notices group by appl_id) sub,
giant.program_announcements pa,
igrant_sys.funding_memos_t fm,
igrant_sys.portfolio_programs_t pp,
igrant_sys.outcome_outputs_t oo
LEFT JOIN
(select max(concept_title) as concept_title, max(port_concept_id) as port_concept_id, outcome_output_id from igrant_sys.port_concepts_t group by outcome_output_id) pc
ON oo.outcome_output_id = pc.outcome_output_id
where a.prog_announcement_id is not null and
(p.end_date is null or p.end_date > SYSDATE) and
p.comp_appl_id = a.appl_id and
a.appl_id = an.appl_id and
an.id_seq = sub.seq and
an.appl_id = sub.appl_id and
pa.announcement_num = a.prog_announcement_id and
a.appl_id = fm.appl_id and
fm.outcome_output_id = oo.outcome_output_id and
oo.portfolio_program_id = pp.portfolio_program_id
minus
SELECT distinct(concept_title ) FROM igrant_sys.port_concepts_t
/


Спасибо!
30 мар 11, 22:08    [10448592]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить