Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Duplicação de dados usando inner join


David Viana

Pergunta

Boa tarde galera,

Fiz o seguinte select no meu banco Mysql:

SELECT pes.nomePessoa FROM pessoa pes INNER JOIN corretor cor ON cor.idclassificacao = 2 ORDER BY pes.nomePessoa;

Ele me retorna todas os corretores que tem classificacao 2, só que vem duplicado. Por exemplo, temos dois corretores salvos na tabela:

Tabela Corretor

Corretor A classificacao 2

Corretor B classificacao 2

quando uso o select acima ele me traz várias vezes o corretor A e varias vezes o corretor B.

O que tem de errado?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Galera, alterei meu select para ver como ele estava trazendo os valores. Verifiquei que para cada nome ele coloca todos os códigos de corretor que .

Por exemplo:

Select utilizado:

SELECT pes.nomePessoa, cor.codCor FROM pessoa pes INNER JOIN corretor cor ON cor.idclassificacao = 2 ORDER BY pes.nomePessoa;

OBS.: tentei apenas com um WHERE, mas teve o mesmo efeito.

SELECT pes.nomePessoa, cor.codCor FROM pessoa pes, corretor cor WHERE cor.idclassificacao = 2 ORDER BY pes.nomePessoa;

Tabela Corretor

idCor -- codCor -- classificacao

1 ------- 123 ------- 1

2 ------- 124 ------- 1

3 ------- 125 ------- 1

4 ------- 126 ------- 2

Tabela Pessoa

idCorretor -- nome

1 ------------ Fulano X

2 ------------ Fulano Y

3 ------------ Fulano Z

4 ------------ Fulano A

Quando faço o select ele traz o fulano X,Y,Z com todos os códigos de corretor retornados:

Fulano X -- 123

Fulano X -- 124

Fulano X -- 125

Fulano Y -- 123

Fulano Y -- 124

Fulano Y -- 125

Fulano Z -- 123

Fulano Z -- 124

Fulano Z -- 125

Link para o comentário
Compartilhar em outros sites

  • 0
Boa tarde galera,

Fiz o seguinte select no meu banco Mysql:

SELECT pes.nomePessoa FROM pessoa pes INNER JOIN corretor cor ON cor.idclassificacao = 2 ORDER BY pes.nomePessoa;

Ele me retorna todas os corretores que tem classificacao 2, só que vem duplicado. Por exemplo, temos dois corretores salvos na tabela:

Tabela Corretor

Corretor A classificacao 2

Corretor B classificacao 2

quando uso o select acima ele me traz várias vezes o corretor A e varias vezes o corretor B.

O que tem de errado?

Oi Davi!

o INNER JOIN é a palavra chave que informa ao SQL que ele vai realizar uma interseção entre dois conjuntos (lembra das aulas de matemática da antiga 5a série?). Para isto ele precisa que dois elementos existam, em correspondência, nos dois conjuntos.

No seu caso você está colocando na cláusula ON, a comparação entre um atributo e uma constante quando deveria ser a comparação entre o atributo da tabela pessoa e o atributo da tabela corretor.

Esta sua comparação não tem nexo e o sistema está mostrando dados irregulares que correspondem a igualdade passada.

Corrija a igualdade da cláusula ON

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...