Jump to content
Fórum Script Brasil
  • 0

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


David Viana

Question

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 to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other sites

Guest
This topic is now closed to further replies.


  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652.1k
×
×
  • Create New...