Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

munhoz

Comparar registros de duas tabelas

Recommended Posts

Olá, amigos.

 

Sou principante em Banco de Dados, mas já consegui um emprego na área e estou com uma tarefa que, para meu nível de conhecimento, considero avançada...não sei nem por onde começar, por isso estou recorrendo a fóruns, se os amigos puderem me dar pelo menos um ponto de partida, ficarei grato.

 

Aqui possuímos duas tabelas semelhantes, a tbl_Localidade e a recém criada tbl_Cidade. A tbl_Localidade contém um campo chamado munícipio, que tém os nomes das cidades, muitas delas redundantes no seu conteúdo, com repetições como: "STO ANDRE", "SANTO ANDRÉ", "SANTO ANDRE" E "S. ANDRÉ".

 

Já a segunda tabela é a tbl_Cidade, esta possui um campo chamado nome_cidade, em que seus registros foram baixados do site dos correios e que possui o nome correto e sem repetições de cada cidade. Minha tarefa é: Pegar tbl_Cidade(a certa), segurar um registro(SANTO ANDRÉ, por exemplo) e comparar registro por registro a tbl_Localidade(zuada) . Se ele encontrar na tbl_Localidade: "SANTO ANDRÉ" ai beleza! Passou, nao precisa trazer nada, pode ir pro proximo da tbl_Localidade. Se no próximo, ou em algum próximo ele encontrar "STO ANDRÉ", ou "SANTO ANDRE"(sem acento), ou "S. ANDRE", por exemplo, ele deve me mostrar este registro diferente que ele achou, pois o objetivo é montar um XLS com todos os id´s das cidades erradas para posterior manutenção, uma vez que a tbl_Localidade tem uma função vital no sistema e não pode ser eliminada.

 

Fazem duas horas que eu to pensando e nao consegui sair do "SELECT * FROM TBL_CIDADE", rs...Se alguem puder me dar um ponto de partida, serei muitíssimo grato.

 

 

Obrigado pela atençao desde já

 

Michel Munhoz

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma query como a de baixo traz um resultado parecido com que voce quer.

O ruim é que não há um padrão para executar essa consulta. Por isso vai dar um trabalhão verificar todas as cidades.

 

select *from tbl_Localidade where munícipio like 's%andr%'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kandrade, obrigado pela atenção.

 

Então, o meu problema é que a tbl_Localidade tem mais de 42.000 registros :wacko: . Então, eu teria que criar uma procedure em que eu informasse a cidade que eu to procurando na tbl_Cidade, e eu varresse a tbl_Localidade inteira. Esta é minha dificuldade.

 

 

Obrigado,

 

Michel Munhoz

Compartilhar este post


Link para o post
Compartilhar em outros sites

select nm_cidade from localidade
where nm_cidade not in (select nm_cidade from cidade)

faz esse select, que vai listar todas as cidades que estão na tabela localidade e que não estão

na tabela cidade. Se todas as cidades na tabela cidade estão certas o comando só vai mostrar as

cidades erradas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu disse não tem um padrão,

por isso voce pode tentar fazer o que o Napraia disse.

 

Trazer registro por registro de cada cidade não sei se tem jeito.

Identificar cidades repetidas sem ter um padrão é difícil.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi...foi de grande ajuda...

 

Eu to fazendo o seguinte, to verificando conforme o Napraia me mostrou, deu certo....me trouxe 2500 registros(+-),só que tem muuuuuuuuuita coisa duplicada, então chutando baixo deve ter dado 200 registros diferentes...eu to atualizando na mão, nao consigo pensar em outro jeito mais rápido....

 

 

 

Eu agradeço a disposição de vocês

 

 

Michel Munhoz

Compartilhar este post


Link para o post
Compartilhar em outros sites

só que tem muuuuuuuuuita coisa duplicada, então chutando baixo deve ter dado 200 registros diferentes...

você pode usar o comando que eu passei com distinct

 

select distinct nm_cidade from localidade
where nm_cidade not in (select nm_cidade from cidade)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.