none
JOIN DUPLICA REGISTROS NA CONSULTA RRS feed

  • Pergunta

  • Amigos, 

    Na consulta abaixo, a query me retorna os registros duplicados... E Mesmo usando o Distinct ele continua duplicados os registros. Sei que é algo relacionado ao JOIN, mas Alguém poderia me dizer como evitar isso?

    SELECT DISTINCT 
    		--dados do consultor
    			tbconsultor.ID_con,
    			tbconsultor.nome_con,
    			tbconsultor.especialidade_con,
    			tbconsultor.email_con,
    			tbconsultor.observacoes_con,
    			tbconsultor.status_con,
    			tbconsultor.datacadastro_con,
    			tbconsultor.Telefone1,
    			tbconsultor.Telefone2,
    			tbconsultor.Telefone3,
    			
    			--Pega o endereço do consultor
    			tbendereco.ID_end,
    			tbendereco.endereco_end,
    			tbendereco.numero_end,
    			tbendereco.bairro_end,
    			tbendereco.cidade_end,
    			tbendereco.uf_end,
    			tbendereco.cep_end,
    			tbendereco.complemento_end
    			
    			FROM tbconsultor 
    
    		INNER JOIN tbendereco ON (tbendereco.IDpessoa_end = tbconsultor.ID_con)		
    
    		WHERE nome_con LIKE '%' + @nome_con + '%' AND tbconsultor.excluido_con = 0 AND tbconsultor.status_con = @status_con
    		
    			
    		ORDER BY nome_con DESC;

    terça-feira, 21 de outubro de 2014 11:07

Respostas

  • Rodrigo,

    Analise os dados de cada tabela do seu JOIN. Provavelmente deve existir mais de um endereço por consultor (ex.: um endereço comercial e outro residencial).

    Pelo seu print-screen eu faria uma análise comparando os dados da coluna "ID_CON = 1" na tabela "tbconsultor" com os dados da coluna "IDpessoa_end" na tabela "tbendereco".

    Isolando os dados em consultas para cada tabela pode ajudar a identificar se os dados realmente estão duplicados ou se está faltando uma coluna no seu JOIN.

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    terça-feira, 21 de outubro de 2014 12:09
    Moderador
  • Rodrigo,

    Pelo resultset é possível perceber que o Consultor de nome_con "Rodrigo" possui 3 endereços diferentes, logo na junção serão geradas 3 linhas diferentes. Oque você precisa? Lista apenas o primeiro endereço? Pois o seu relacionamento é 1 consultor para N endereços.

    terça-feira, 21 de outubro de 2014 12:15

Todas as Respostas

  • Bom dia,

    Adicione um group by 

    GROUP BY tbconsultor.ID_con,
    			tbconsultor.nome_con,
    			tbconsultor.especialidade_con,
    			tbconsultor.email_con,
    			tbconsultor.observacoes_con,
    			tbconsultor.status_con,
    			tbconsultor.datacadastro_con,
    			tbconsultor.Telefone1,
    			tbconsultor.Telefone2,
    			tbconsultor.Telefone3,		
    			tbendereco.ID_end,
    			tbendereco.endereco_end,
    			tbendereco.numero_end,
    			tbendereco.bairro_end,
    			tbendereco.cidade_end,
    			tbendereco.uf_end,
    			tbendereco.cep_end,
    			tbendereco.complemento_end

    Marque como resposta, se foi útil!
    terça-feira, 21 de outubro de 2014 11:19
  • Mesmo com o group by continua trazendo os registros duplicados. :/
    terça-feira, 21 de outubro de 2014 11:35
  • Isso indica que pelo menos uma das colunas das linhas possuem conteúdos diferentes. Por favor, poste o resultset ou pelo menos a parte que acredita estar duplicando.
    • Sugerido como Resposta Deric Ferreira terça-feira, 21 de outubro de 2014 11:37
    terça-feira, 21 de outubro de 2014 11:36
  • Segue o resultado:

    terça-feira, 21 de outubro de 2014 12:01
  • Rodrigo,

    Analise os dados de cada tabela do seu JOIN. Provavelmente deve existir mais de um endereço por consultor (ex.: um endereço comercial e outro residencial).

    Pelo seu print-screen eu faria uma análise comparando os dados da coluna "ID_CON = 1" na tabela "tbconsultor" com os dados da coluna "IDpessoa_end" na tabela "tbendereco".

    Isolando os dados em consultas para cada tabela pode ajudar a identificar se os dados realmente estão duplicados ou se está faltando uma coluna no seu JOIN.

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    terça-feira, 21 de outubro de 2014 12:09
    Moderador
  • Rodrigo,

    Pelo resultset é possível perceber que o Consultor de nome_con "Rodrigo" possui 3 endereços diferentes, logo na junção serão geradas 3 linhas diferentes. Oque você precisa? Lista apenas o primeiro endereço? Pois o seu relacionamento é 1 consultor para N endereços.

    terça-feira, 21 de outubro de 2014 12:15