Fórum SELECT / DELETE em SQL.... To ficando MALUUUCO. #54001

28/11/2005

0

Amigos,

Estou usando um banco FIREBIRD 1.5 - DBEXPRESS - DELPHI 7.0 e estou tentando fazer uma filtragem dos meus dados. Possuo muitos clientes duplicados em NOME DA EMPRESA e CIDADE. Então, fiz a seguinte rotina:

[b:ca18375c24]SELECT EMPRESA, CIDADE FROM TABELA1 GROUP BY EMPRESA, CIDADE HAVING (COUNT(EMPRESA) > 1)[/b:ca18375c24]

Até ai tudo bem, o problema é como apagar fisicamente esses dados?

Tentei usar o Delete From Tabela1... mas ñ aceitou devido ao [b:ca18375c24]´GROUP BY´[/b:ca18375c24].


Desde já fico muito agradecido.


Muito Obrigado.

Silvério.[b:ca18375c24][/b:ca18375c24]


Sorsilver

Sorsilver

Responder

Posts

29/11/2005

Thomaz_prg

Você poderia tentar assim:

DELETE FROM TABELA1 A WHERE (SELECT COUNT(*) FROM TABELA1 B WHERE B.EMPRESA = A.EMPRESA AND B.CIDADE = A.CIDADE) > 1

Ou então, criar uma procedure usando um For Select.... e excluindo o que você quer.


Responder

Gostei + 0

29/11/2005

Sorsilver

Amigo Thomaz, eu estou usando apenas uma Tabela, não existe Tabela B. Nessa tabela existem clientes com nome e cidade repetidos várias vezes, alguns 1,2,3,4 ou até 5 vezes. Ñ tem jeito dessa SQL fungar... rsrs...

[b:57ef33498d]COD-----EMPRESA----------CIDADE[/b:57ef33498d]
01--------BRADESCO---------SAO PAULO
02--------BRADESCO---------SAO PAULO
03--------BRADESCO---------SAO PAULO
04--------BRADESCO---------ARARAQUARA
05--------ITAU----------------CAMPINAS
06--------ITAU----------------CAMPINAS
07--------ITAU----------------BAURU


[b:57ef33498d]DEVE FICAR ASSIM:[/b:57ef33498d]

[b:57ef33498d]COD-----EMPRESA----------CIDADE[/b:57ef33498d]
01--------BRADESCO---------SAO PAULO
04--------BRADESCO---------ARARAQUARA
05--------ITAU----------------CAMPINAS
07--------ITAU----------------BAURU


Se tiver mais alguma luz, por favor help me.

Silvério


Responder

Gostei + 0

29/11/2005

Bruno Belchior

talves isso funcione:
delete from TABELA A where A.IdTabela in (select first 100 skipe 1 B.IdTabela B where B.Nome = A.Nome)



Responder

Gostei + 0

29/11/2005

Bruno Belchior

[quote:62ea5c83e7=´Bruno Belchior´]talves isso funcione:
delete from TABELA A where A.IdTabela in (select first 100 skipe 1 B.IdTabela B where B.Nome = A.Nome)
[/quote:62ea5c83e7]corrigindo...
delete from TABELA A where A.IdTabela in (select first 100 skipe 1 B.IdTabela from TABELA B where B.Nome = A.Nome)



Responder

Gostei + 0

29/11/2005

Emerson Nascimento

ou assim:

delete from tabela 
where not cod in
  (select min(cod) from tabela
   group by empresa, cidade)



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar