grego Postado Dezembro 11, 2011 Denunciar Share Postado Dezembro 11, 2011 (editado) 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. Editado Dezembro 12, 2011 por Denis Courcy Colocar codigo entre CODEs Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Dezembro 12, 2011 Denunciar Share Postado Dezembro 12, 2011 Movendo PHP » MySQL. Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Dezembro 12, 2011 Denunciar Share Postado Dezembro 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 para o comentário Compartilhar em outros sites More sharing options...
0 grego Postado Dezembro 12, 2011 Autor Denunciar Share Postado Dezembro 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 para o comentário Compartilhar em outros sites More sharing options...
Pergunta
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.
Editado por Denis CourcyColocar codigo entre CODEs
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados