Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Dois INNER JOIN na mesma tabela


grego

Pergunta

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.

Editado por Denis Courcy
Colocar codigo entre CODEs
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...