Duvida de insert

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
krecchi
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 7
Registrado em: Qui, 18 Out 2007 7:55 am
Localização: São Paulo
KRecchi

Pessoal bom dia.

Este insert pega informações de uma tabela e verifica se o COD_TRAT_CC existe nas tabelas TAB_CC e TABELA_TRATAMENTO, se o codigo existir em uma das duas tabelas e não deve inserir. Porém ele continua a inserir o codigo que já existe na tabela TAB_CC na TABELA_TRATAMENTO, o que eu estou fazendo de errado?

Selecionar tudo

insert into TABELA_TRATAMENTO
           select distinct '13',
                  COD_TRAT_CC,
                  W_DATA,
                  'I'
           from CONTA_CC
           where COD_TRAT_CC not in
          (select COD_CC from TAB_CC) and
           COD_TRAT_CC not in
           (select COD_PROD from TABELA_TRATAMENTO where TAB = '13')
Obrigada!
KRECCHI
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Tenta fazer union, acho que até fica mais fácil de entender a lógica do negócio.

Selecionar tudo

where COD_TRAT_CC not in 
          (select COD_CC from TAB_CC
           UNION 
           select COD_PROD from TABELA_TRATAMENTO where TAB = '13')
ou NOT EXISTS, acho que fica mais rápido:

Selecionar tudo

select 
  distinct '13'
, x.COD_TRAT_CC
, x.W_DATA
, 'I'
from CONTA_CC x
where NOT EXISTS (select 1 
                  from TAB_CC 
                  where COD_CC = x.COD_TRAT_CC)
  and NOT EXISTS (select 1 
                  from TABELA_TRATAMENTO
                  where COD_PROD = x.COD_TRAT_CC
                    AND TAB = '13')
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 9 visitantes