Rudimar Postado Maio 9, 2004 Denunciar Share Postado Maio 9, 2004 Existe alguma funçao que permita localizar registros duplicados na base de dados?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Illidan Postado Maio 9, 2004 Denunciar Share Postado Maio 9, 2004 você sabe trabalhar com MySQL? É só dar um select e contar o número de retornos. Por exemplo, vamos supor que no seu banco de dados exista um campo login, e que você queira verificar quantos registros "Rudimar" existem nesse campo.$pesquisa = "Rudimar";$query = "SELECT login FROM usuarios WHERE login='$pesquisa'";$conexao = mysql_connect("localhost", "usuario", "senha");$resultado = mysql_query($query, $conexao);$total = mysql_num_rows($resultado);E pronto... a variável $total contém o número de logins que estão como "Rudimar"...Falou! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rudimar Postado Maio 9, 2004 Autor Denunciar Share Postado Maio 9, 2004 Obrigado, mas não é bem isso o que procuro...Preciso fazer uma verificacao em minha tabela se existem registros duplicados. Não possuo nenhuma informação sobre qual registro poderá estar duplicado. O sistema é que devera fazer isto, mais ou menos assim:Pega-se o primeiro registro da tabela e obtem-se os dados da tabela.Depois o sistema deverá percorrer toda base de dados e verificar se existe algum outro registro igual.... Se existir deleta, se não vai para o segundo registro da tabela e faz o procedimento novamente... e assim fará até o final da tabela...Lembrando que não possuo nenhuma informacao de qual registro pderá estar duplicado... O sistema é que deverá fazer isto sozinho... E o único meio que vejo é como mencionei acima...Só que me parece muito improdutivo.... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Illidan Postado Maio 9, 2004 Denunciar Share Postado Maio 9, 2004 Entendi... tive uma idéia, aqui.você quer que verifique TODOS os campos se tem dados duplicados? Ou um só? Acho que um só, né? Bom, olha o que eu pensei:Supondo que o campo que não pode ser duplicado seja o "login" (se houver outros campos, a gente incrementa depois):1. você dá um SELECT login FROM usuarios...2. Aí você coloca num array todos os logins: (se não souber como, depois eu ajudo)$todos_logins = array("carlos", "jose", "fernando", "carlos", "jose", "roberto");// conta quantas vezes cada elemento aparece no array$contar_registros = array_count_values($todos_logins);// coloca num array chamado $duplicados os registros que aparecem mais de 1 vez$sem_duplicados = array_unique($todos_logins);$i = 0;foreach ($sem_duplicados as $login) { if ($contar_registros[$login] > 1) { $duplicados[$i] = $login; $i++; }}E tá quase pronto... depois seria só você pegar cada elemento do array $duplicados e mandar apagar APENAS UM registro da tabela. Eu destaquei isso porque, se você mandar apagar com "DELETE FROM usuarios WHERE login='$duplicados[0]'", apagaria os dois registros duplicados!Não sei se teria como usar o LIMIT 1 aí pra resolver isso... talvez sim. Vamos esperar pra ver se alguém mais ajuda.Falou! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Rudimar
Existe alguma funçao que permita localizar registros duplicados na base de dados??
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.