Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Dois INNER JOIN na mesma tabela


grego

Question

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

mysql_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 by Denis Courcy
Colocar codigo entre CODEs
Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

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.idloja

Você 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

  • 0
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.idloja

Você 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

Guest
This topic is now closed to further replies.


  • Forum Statistics

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