ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

sql delete erro

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
fabiodurgante
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 8 de Novembro de 2013
Mensagens: 197

MensagemEnviada: Dom Out 01, 2017 10:23 am    Assunto: sql delete erro Responder com Citação

ola tenho o seguinte sql
Código:

DELETE FROM conta WHERE id IN (
select FIRST 5000 a.id
from  conta a
inner join conta1 b  on a.id= b.id
where a.data< :data ) ;



esse sql trava o ibexpert tentei colocar limite para 5000 registros e mesmo assim trava first 1 trava tambem porem se eu fizer assim

Código:

DELETE FROM conta WHERE id = 500

assim funciona perfeito porem quero apagar todos os registros da tabela conta quando o mesmo ID estiver na tabela conta e conta1 apaga na tabela conta

porem trava tudo no delphi fiz assim e funcionou
Código:


    IBQuery2.Close;
      IBQuery2.SQL.Clear;

      IBQuery2.sql.add(' select a.id');
      IBQuery2.sql.add('from  conta a ');
      IBQuery2.sql.add('inner join conta1 b  on a.id= b.id');
      IBQuery2.sql.add('where a.data< :data');
      IBQuery2.ParamByName('data').AsDate:=  data;
      IBQuery2.Prepare;
      IBQuery2.Open;
      IBQuery2.FetchAll;
      label5.Caption:=IntToStr( IBQuery2.RecordCount);

  IBQuery2.First;
     while not IBQuery2.EoF do
     begin
       sql_pagar_contas(IBQuery2.FieldByName('id').Value) ;
       IBQuery2.Next;
     end;


  procedure TForm1.sql_pagar_contas(id:String);
  begin
IBQuery1.Close;
    IBQuery1.SQL.Clear;

  IBQuery1.sql.add('   DELETE FROM conta WHERE id = '+id);
    IBQuery1.Prepare;
    IBQuery1.ExecSQL;
end


assim no delphi funcionou faco um select com todos os id que quero deletar e vou deletando 1 por 1 no while, quero fazer isso no ibexpert mas trava como poderia fazer ???
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Dom Out 01, 2017 3:33 pm    Assunto: Responder com Citação

Boa tarde,

Experimente dessa forma:

Código:
DELETE FROM conta a
WHERE
    a.data < :data and
    exists (select 1 from conta1 b where b.id = a.id)


Espero que ajude

_________________
Assinatura: https://www.imoveisemexposicao.com.br/imoveis-alugar-guarulhos!centro-residencial-apartamento
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
digitom
Novato
Novato


Registrado: Quinta-Feira, 30 de Junho de 2005
Mensagens: 54

MensagemEnviada: Seg Out 02, 2017 8:43 am    Assunto: Responder com Citação

Eu faria do jeito que nosso amigo IMEX sugeriu. .

Código:
DELETE FROM conta a
WHERE
    (a.data < :data) and
    exists (select 1 from conta1 b where b.id = a.id)


Rolling Eyes
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
fabiodurgante
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 8 de Novembro de 2013
Mensagens: 197

MensagemEnviada: Seg Out 02, 2017 11:06 am    Assunto: Responder com Citação

valeuu funcionou obrigado agradeçooo
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB