David Viana Posted December 26, 2011 Report Share Posted December 26, 2011 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 CorretorCorretor A classificacao 2Corretor B classificacao 2quando 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 More sharing options...
0 David Viana Posted December 26, 2011 Author Report Share Posted December 26, 2011 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 CorretoridCor -- codCor -- classificacao1 ------- 123 ------- 12 ------- 124 ------- 13 ------- 125 ------- 14 ------- 126 ------- 2Tabela PessoaidCorretor -- nome 1 ------------ Fulano X 2 ------------ Fulano Y3 ------------ Fulano Z4 ------------ Fulano AQuando faço o select ele traz o fulano X,Y,Z com todos os códigos de corretor retornados:Fulano X -- 123Fulano X -- 124Fulano X -- 125Fulano Y -- 123Fulano Y -- 124Fulano Y -- 125Fulano Z -- 123Fulano Z -- 124Fulano Z -- 125 Link to comment Share on other sites More sharing options...
0 Denis Courcy Posted December 27, 2011 Report Share Posted December 27, 2011 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 CorretorCorretor A classificacao 2Corretor B classificacao 2quando 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 More sharing options...
0 David Viana Posted December 28, 2011 Author Report Share Posted December 28, 2011 Denis Courcy, valeu. Eu num saco quase nada de Banco de Dados, estou começando a aprender agora.A alteração + o incremento de um where resolveu o meu problema.Vlw Link to comment Share on other sites More sharing options...
Question
David Viana
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