USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Como deletar registros duplicados na tabela ?
MARCELO SENA
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 04/07/2004 14:07 hs            
A idéia que tenho é a seguinte:
Dentro da tabela:
Pegue o registro A e compare com o próximo no caso B
Se A for igual a B, então apaga, caso contrário vá para o próximo enquanto não chegar ao fim da tabela.

Como posso codificar o código acima usando o D.A.O. ?
Responda tb para: marcelo.sena@br.schindler.com e mpfsena@yahoo.com.br
Obrigado !

 
   
Geronimo
Pontos: 2843
JOINVILLE
SC - BRASIL
ENUNCIADA !
Postada em 04/07/2004 15:51 hs            

"O pior inimigo que você poderá encontrar será sempre você mesmo."
   
MARCELO SENA
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 04/07/2004 16:12 hs            
Ola meu amigo, Geronimo !
Acontece o seguinte o Macoratti não diz qual o código, no site está da seguinte forma:
"2-) A seguir vamos excluir os registros duplicados, usando SQL é claro. A consulta SQL é a seguinte: "
Mas qual é o código SQL ?
 
   
Geronimo
Pontos: 2843
JOINVILLE
SC - BRASIL
ENUNCIADA !
Postada em 04/07/2004 16:45 hs            
Tente:

Comando SQL que remove registros duplicados em uma tabela

DELETE FROM Clientes

WHERE CODCLI= ANY(SELECT CLIENTES2.CODCLI FROM CLIENTES2

LEFT JOIN (SELECT Min(CODCLI) AS CODCLI, NOME

FROM CLIENTES2 GROUP BY NOME) AS Dup

ON CLIENTES2.CODCLI = Dup.CODCLI

WHERE Dup.CODCLI IS NULL)

PS: CLIENTES2 é uma view (ou uma cópia) da tabela CLIENTES.


"O pior inimigo que você poderá encontrar será sempre você mesmo."
   
Geronimo
Pontos: 2843
JOINVILLE
SC - BRASIL
ENUNCIADA !
Postada em 04/07/2004 16:46 hs            
ou

Comando SQL que mostra todos os registros duplicados em uma tabela :

SELECT CLIENTES.CODCLI, CLIENTES.NOME FROM CLIENTES INNER JOIN (SELECT NOME FROM CLIENTES GROUP BY NOME HAVING Count(*)>1) AS Dup ON CLIENTES.NOME = DUP.NOME Outra forma interessante: SELECT * FROM CLIENTES A WHERE EXISTS( SELECT NULL FROM CLIENTES B WHERE B.NOME = A.NOME GROUP BY B.NOME HAVING A.[CODCLI]


"O pior inimigo que você poderá encontrar será sempre você mesmo."
   
Geronimo
Pontos: 2843
JOINVILLE
SC - BRASIL
ENUNCIADA !
Postada em 04/07/2004 18:20 hs            
Eventualmente, em uma tabela que não possui chave primária especificada, ocorre a duplicação de registros.

O problema de duplicar um registro inteiro é que não há, via instruções básicas do sql, como manipular apenas um sem estar na verdade manipulando os 2. Por isso que quando este erro ocorre o próprio enterprise manager, que nada mais é que um client do servidor, não consegue mais manipular os registros.

A primeira coisa que se imagina é utilizar um cursor para acessar os registros duplicados e deletar um. Porém existe solução mais simples, veja :

select distinct * into #tabelatmp from tabela
truncate table tabela
insert into tabela select * from #tabelatmp

Utilizando o distinct na hora de passar os registros para a tabela temporária já eliminamos uma das cópias dos registros duplicados. Apagamos então todo o conteúdo da tabela e trazemos os dados de volta a partir da tabela temporária

"O pior inimigo que você poderá encontrar será sempre você mesmo."
   
Página(s): 1/2      PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página