Fórum Sql Delecao #243776
20/07/2004
0
Tenho uma tabela atendimento, essa tabela gera registros em uma segundat tabela chamada ParcelaAtendimento.Com isso para deletar os registros na tabela atendimento eu tenho de deletar primeiro os registros vinculados com a parcelaatendimento.So que nao estou conseguindo montar a Sql de deleção para esse caso.Sao chaves compostas o relacionamento, os campos ID e COD_LOJA.
Seria algo mais ou menos assim:
delete from parcelaatendimento P
inner JOIN atendimento A ON(A.ID = P.ID and A.Cod_Loja=P.Cod_Loja)
where (a.data_atend <´06/19/2004´ or a.data_atend > ´07/13/2004´> )
So que desse jeito o InterbAse da erro no Inner Join.Nao sei por que.
Alguem tem alguma solução pra isso?
Fred_montanha
Curtir tópico
+ 0Posts
20/07/2004
Emerson Nascimento
delete from parcelaatendimento
where cast(ID as char(10)) || cast(Cod_Loja as char(10)) in
  (select cast(a.ID as char(10)) || cast(a.Cod_Loja as char(10))
    from atendimento a
    where a.data_atend > ´06/19/2004´ and a.data_atend < ´07/13/2004´)
Gostei + 0
20/07/2004
Rafs
Observação, a sua instrução SQL está com um caractere de maior ´>´ após a data ´07/13/2004´, acredito que isto tenha sido erro de digitação apenas aqui no forum.
Outra coisa, verifique se a construção das datas está correta, pois vc está selecionando todos os registros que estão com datas menores que 19/Jun/2004 e também maiores que ´13/Jul/2004´, não sería o oposto?!
Gostei + 0
20/07/2004
Paulo_amorim
Até onde eu saiba, não existe inner join no DELETE...posso estar errado, mas acho que não aceita essa sintaxe não kra..
Daria pra fazer se o InterBase fizesse subselect, mas como não, vc precisa fazer 2 queries...
Se vc tiver controlando pelo Delphi, vc pode faer assim:
uma vc faz
SELECT id, cod_loja FROM atendimento WHERE data_atend NOT BETWEEN :p1 AND :p2
dai pega o resultset e faz [i:91b818e5a9]while not EOF[/i:91b818e5a9]...
e poe a sintaxe de deleção
DELETE FROM parcelaatendimento WHERE id = :p1 AND cod_loja = :p2
Espero queajude
Até+
Gostei + 0
21/07/2004
Josemars
Com isso faço o primeiro sql para delete o resgistros da tabela filho e depois denttro do mesma procedure, aproveito a variavel que está guardando o número do atendimento e faço a exclusão da tabela pai. Sempre tem dado certo .
Duvidas, josaudi@yahoo.com.br
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)