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

(Resolvido) Erro na consulta MySQL


Ed Hector

Pergunta

Prezados Senhores boa tarde

Estou tentando resolver um problema estou tendo certa dificuldade, conto com a ajuda dos senhores

Tenho 2 tabelas, PESSOA e ACESSOS:

PESSOAS (Nesta tenho os dados de qualquer pessoa, pode ser o próprio visitate, funcionário, autorizante ou visitado)

id_pessoa (pk)

nome (varchar)

rg (varchar)

.

.

.

.

ACESSOS (Tenho os ACESSO que no caso o VISITANTE fez e as informações do CADASTRANTE, VISITADO e AUTORIZANTE)

id_acesso (pk)

id_pessoa (fk tabela PESSOA) Aqui tenho o ID da pessoa que fez o acesso (VISITANTE). Como é um FK da tabela pessoa OK.

.

.

cadastrante

visitado

autorizante

.

.

.

Nos campos: cadastrante, visitado e autorizante, gravo o id da pessoa (tabela pessoa) de acordo com papel dela naquele momento.

Então resumindo, tenho 3 campos alimentados com o ID_PESSOA da tabela pessoa na tabela ACESSOS...

O que necessito que não estou conseguindo fazer?

Em um mesmo SELECT trazer todas as informações da tabela ACESSOS e o NOME DA PESSOA (não o ID) da tabela PESSOAS, de acordo com o ID informado nos campos CADASTRANTE, VISITADO e AUTORIZANTE.

Preciso de algo assim a ser retornado pelo SELECT:

ID_ACESSO | ID_PESSOA | NOME_VISITANTE | CADASTRANTE | VISITADO | AUTORIZANTE

1 | 2222 | EDUARDO | JOAO | MARCOS | MARIA

2 | 3333 | JONAS | JOAO | MARIA | MARIA

3 | 4444 | ROGER | ANTONIO | MARCOS | MARCOS

Ou seja, retornar os dados não com o ID_PESSOA atribuido a cad a campo e sim o nome que deve ser obtido na tablea pessoa....

Desde já agradeço a atenção...

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Oi, 'Ed Hector'

Tente assim:

SELECT A.ID_ACESSO, visitante.ID_PESSOA AS ID_PESSOA, visitante.nome AS NOME_VISITANTE, 
cadastrante.nome AS CADASTRENTE, visitado.nome AS VISITADO, autorizante.nome AS AUTORIZANTE
FROM ACESSOS A
INNER JOIN PESSOAS visitante ON visitante.id_pessoa = A.id_pessoa
LEFT JOIN PESSOAS cadastrante ON cadastrante.id_pessoa = A.id_pessoa
LEFT JOIN PESSOAS visitado ON visitado.id_pessoa = A.id_pessoa
LEFT JOIN PESSOAS autorizante ON autorizante.id_pessoa = A.id_pessoa

Link para o comentário
Compartilhar em outros sites

  • 0
Oi, 'Ed Hector'

Tente assim:

SELECT A.ID_ACESSO, visitante.ID_PESSOA AS ID_PESSOA, visitante.nome AS NOME_VISITANTE, 
cadastrante.nome AS CADASTRENTE, visitado.nome AS VISITADO, autorizante.nome AS AUTORIZANTE
FROM ACESSOS A
INNER JOIN PESSOAS visitante ON visitante.id_pessoa = A.id_pessoa
LEFT JOIN PESSOAS cadastrante ON cadastrante.id_pessoa = A.id_pessoa
LEFT JOIN PESSOAS visitado ON visitado.id_pessoa = A.id_pessoa
LEFT JOIN PESSOAS autorizante ON autorizante.id_pessoa = A.id_pessoa

Prezado Denis muito obrigado

O Select sugerido retornou os dados, porém, ele repete o NOME_VISITANTE nos outros campos, cadastrante, visitado e autorizante!

Pelo que entendi, trouxe o mesmo nome do campo NOME_VISITANTE...

Se tiver mais alguma sugestão agradeço

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, 'Ed Hector'

Desculpe o erro. Fiz a rotina apressadamente, sem testar e não percebi o erro.

Tente assim:

SELECT A.ID_ACESSO, visitante.ID_PESSOA AS ID_PESSOA, visitante.nome AS NOME_VISITANTE, 
cadastrante.nome AS CADASTRENTE, visitado.nome AS VISITADO, autorizante.nome AS AUTORIZANTE
FROM ACESSOS A
INNER JOIN PESSOAS visitante ON visitante.id_pessoa = A.id_pessoa
LEFT JOIN PESSOAS cadastrante ON cadastrante.id_pessoa = A.cadastrante
LEFT JOIN PESSOAS visitado ON visitado.id_pessoa = A.visitado
LEFT JOIN PESSOAS autorizante ON autorizante.id_pessoa = A.autorizante

Link para o comentário
Compartilhar em outros sites

  • 0
Oi, 'Ed Hector'

Desculpe o erro. Fiz a rotina apressadamente, sem testar e não percebi o erro.

Tente assim:

SELECT A.ID_ACESSO, visitante.ID_PESSOA AS ID_PESSOA, visitante.nome AS NOME_VISITANTE, 
cadastrante.nome AS CADASTRENTE, visitado.nome AS VISITADO, autorizante.nome AS AUTORIZANTE
FROM ACESSOS A
INNER JOIN PESSOAS visitante ON visitante.id_pessoa = A.id_pessoa
LEFT JOIN PESSOAS cadastrante ON cadastrante.id_pessoa = A.cadastrante
LEFT JOIN PESSOAS visitado ON visitado.id_pessoa = A.visitado
LEFT JOIN PESSOAS autorizante ON autorizante.id_pessoa = A.autorizante

Bom dia Denis

Muito obrigado meu amigo, deu certo!!!!

Grande abraço

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...