Select que retorne um atributo entre três tabelas
Olá pessoal,
Tenho um pequeno banco de dados para uma Biblioteca Escolar e preciso retornar o nome da pessoa para o qual um livro está emprestado. Seria fácil se os leitores estivessem cadastrados em uma tabela Pessoa, por exemplo, mas há uma tabela para alunos, outra funcionários e outra professores (sim, um equívoco...). A tabela empréstimo possui a seguinte estrutura:
/applications/core/interface/imageproxy/imageproxy.php?img=https://www.scriptbrasil.com.br/forum/uploads/monthly_2018_02/tabelaEmprestimo.jpg.f77095043df2116e26f5607b5e0ebae6.jpg&key=483af280f79aae515be0cf8aa5e3a2991029ed2bb9536f408dbe232c020ceeac" />
Já as tabelas alunos, professores e funcionarios possuem estrutura bastante semelhante, ambas contendo uma chave primária (id_alunos, id_professores, id_funcionarios) respectivamente e um campo nome (que é o que preciso retornar quando a pessoa em questão estiver com a situação "E" na tabela emprestimo, ou seja, vinculada a duas id, a de sua tabela e a do livro.
Atualmente utilizo o seguinte sql para retornar os livros emprestados apenas para alunos, mas preciso de um que me mostre mesclado, todos os livros emprestados.
Select e.num_emprestimo, l.id_livros, titulo, autor, genero, data_emprestimo, data_devolucao, a.nome as leitor from livros l
inner join emprestimo e on l.id_livros = e.id_alunos
inner join alunos a on e.id_alunos = a.id_alunos
where e.situacao = 'E' order by data_devolucao
/applications/core/interface/imageproxy/imageproxy.php?img=https://www.scriptbrasil.com.br/forum/uploads/monthly_2018_02/consultaEmprestimo.jpg.890bce174f2ef62782189807d50cc2bd.jpg&key=ec59d00a114e340e90ad053cae95f13d9d91ff3682429ddc044bfeed08a27f74" />
Então é isso. Preciso que na última coluna (Emprestado para) apareça tanto os alunos, quanto professores quanto funcionários.
Alguém pode me ajudar? Pensei em uma *procedure*, mas não consegui fazer. Se houver uma forma somente com um SQL agradeço muito.Discussão (4)
Carregando comentários...