grego Posted December 11, 2011 Report Share Posted December 11, 2011 (edited) Saudações !Me deparei com um problema e já estou há dois dias pesquisando, porém as dicas não tratam da forma que preciso.Vou explicar:Na tabela acesso, tenho por exemplo o pedro codioper = 1 e joao codioper = 2Gravo na tabela contrato, o campo crediario = 1 e campo vendedor = 2 Preciso fazer DOIS inner join na mesma tabela, pois com o codigo crediario preciso do nome e com o codigo vendedor preciso do nome também.Detalhe: o 1º nome é cliente. O 2º nome tratei como nomec e o 3º nome tratei como nomevmysql_query("SELECT contrato.*,cliente.nome,acesso.nome AS nomec,acesso.nome AS nomev,loja.nomeloja FROM contrato INNER JOIN cliente ON ( contrato.codigocliente = cliente.codigocliente ) INNER JOIN acesso ON ( contrato.crediario = acesso.codioper ) INNER JOIN acesso ON ( contrato.vendedor = acesso.codioper INNER JOIN loja ON ( contrato.loja = loja.idloja )Com UM inner join apenas na tabela acesso, usando AS funciona certo. O problema que não funciona é acessar DUAS vezes, mesmo com apelido na tabela.Se alguém souber como resolver, fico muitissimo agradecido. Edited December 12, 2011 by Denis Courcy Colocar codigo entre CODEs Link to comment Share on other sites More sharing options...
0 ESerra Posted December 12, 2011 Report Share Posted December 12, 2011 Movendo PHP » MySQL. Link to comment Share on other sites More sharing options...
0 Denis Courcy Posted December 12, 2011 Report Share Posted December 12, 2011 Oi 'grego' Faça assim:SELECT ctr.*, cli.nome, a1.nome AS nomec, a2.nome AS nomev, lj.nomeloja FROM contrato ctr INNER JOIN cliente cli ON ctr.codigocliente = cli.codigocliente INNER JOIN acesso a1 ON ctr.crediario = a1.codioper INNER JOIN acesso a2 ON ctr.vendedor = a2.codioper INNER JOIN loja lj ON ctr.loja = lj.idlojaVocê precisa "apelidar" cada tabela com um apelido diferente para que o join possa entender o que você quer fazer. Link to comment Share on other sites More sharing options...
0 grego Posted December 12, 2011 Author Report Share Posted December 12, 2011 Oi 'grego' Faça assim:SELECT ctr.*, cli.nome, a1.nome AS nomec, a2.nome AS nomev, lj.nomeloja FROM contrato ctr INNER JOIN cliente cli ON ctr.codigocliente = cli.codigocliente INNER JOIN acesso a1 ON ctr.crediario = a1.codioper INNER JOIN acesso a2 ON ctr.vendedor = a2.codioper INNER JOIN loja lj ON ctr.loja = lj.idlojaVocê precisa "apelidar" cada tabela com um apelido diferente para que o join possa entender o que você quer fazer.Muito obrigado Denis pela grande ajuda que resolveu meu problema.Sua valiosa dica agregou um conhecimento que eu não tinha. Link to comment Share on other sites More sharing options...
Question
grego
Saudações !
Me deparei com um problema e já estou há dois dias pesquisando, porém as dicas não tratam da forma que preciso.
Vou explicar:
Na tabela acesso, tenho por exemplo o pedro codioper = 1 e joao codioper = 2
Gravo na tabela contrato, o campo crediario = 1 e campo vendedor = 2
Preciso fazer DOIS inner join na mesma tabela, pois com o codigo crediario preciso do nome e com o codigo vendedor preciso do nome também.
Detalhe: o 1º nome é cliente. O 2º nome tratei como nomec e o 3º nome tratei como nomev
Com UM inner join apenas na tabela acesso, usando AS funciona certo. O problema que não funciona é acessar DUAS vezes, mesmo com apelido na tabela.
Se alguém souber como resolver, fico muitissimo agradecido.
Edited by Denis CourcyColocar codigo entre CODEs
Link to comment
Share on other sites
3 answers to this question
Recommended Posts