Jump to content
Eduardo Trindade

Select que retorne um atributo entre três tabelas

Recommended Posts

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:

 

tabelaEmprestimo.jpg.f77095043df2116e26f5607b5e0ebae6.jpg

 

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

consultaEmprestimo.jpg.890bce174f2ef62782189807d50cc2bd.jpg

 

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.

Share this post


Link to post
Share on other sites

Verdade @Motta. Ainda não tentei, mas tudo que preciso fazer é replicar este select para as outras duas tabelas, de modo que sejam exatamente iguais em número e ordem de colunas, interligando-os com o Union certo? Funciona pra três select? Chegando em casa vou tentar.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Herberto Silva
      Olá
      Estou com uma dificuldade em elaborar um select de forma que verifique um campo data, (com uma atribuição de uma variável $current_date = date('Y-m-d');) caso exista essa data o select posicione-se no registo, neste caso no registo que contém a data igual a $current_date, mantendo os restantes registos da tabela disponíveis
    • By juliosertori
      Olá tudo bem?
       
      Tenho uma tabela onde registro os produtos que vendeu, com o ID do Pedido, e preciso listar os mais vendidos por período.
       
      Tenho o SQL:
      SELECT SUM(quantidade) AS quantidade, id_produto, nome_produto FROM pedidos_produtos WHERE id_empresa = '".$_CPD['CompanyId']."' GROUP BY id_produto order by quantidade desc limit 0,10 Lista perfeitamente, mas o problema é que a DATA está na tabela PEDIDOS, como linkar?
       
      Obrigado!
    • By mamotinho
      Olá, a alguns dias eu percebi que estou com um único problema no código do meu site , e queria sabe se é possível eu corrigir essa mensagem de erro segue abaixo imagem do erro.
       

    • By Augusto Developer
      Olá, eu gostaria de uma ajuda, a qual eu não estou conseguindo repetir o laço do PHP para o meu script atual.
       
      Bom, eu tenho u script que gera 25 números aleatórios para assim, gerar o jogo desejado e também eu tenho um campo(input) que é minha $qtd['qtd_cartela']; a qual essa é responsável por gerar a quantidade de números desejados.
       
      Bom, o que eu preciso é quando alguém escolher mais de 1 jogo(cartela), irão gerar 25 números, aleatórios, pois não estou conseguindo gerar mais de um jogo, e mostrar isso através de um foreach ou outro laços do php.
       
      Enfim, quando eu coloco mais de 1 valor, para gerar a combinação, eu  dou um var_dump na minha variável $qtd eu consigo ver que esta mostrando a quantidade desejada, mais nao consigo fazer isso aparecer após escolher o valor desejado.
       
      Resumindo, eu preciso colocar um valor que eu quiser, e mostrar varios números apos submeter meu fomulário.
       
      Obrigado e aguardo ajuda.
       
       
      Meu script:
       
       <?php                 $bingo = filter_input_array(INPUT_POST, FILTER_DEFAULT);                 if(isset($bingo['gerar'])){                     unset($bingo['gerar']);                       if(!empty($bingo['qtd_cartela'] == '')){                         dialog('<b>Ops... preencha o campo cartela!</b>', 'warning');                     }elseif($bingo['qtd_cartela'] == 0 ){                         dialog('<b>Ops... preencha com um valor válido!</b>', 'warning');                     }else{                           $totalNumber = 25;                         $total = '';                          $qtd = $bingo['qtd_cartela'];                                                  for($i = 0; $i < $totalNumber; $i++){                             $numberGenerator = rand(1, 90);                             $total .= $numberGenerator;                         }
                              var_dump($total);                                              //dialog('Sucesso...', 'success');                        }                   }                   ?>                   <form action="" enctype="multipart/form-data" method="post">                     <div class="row">                         <div class="col-md-3">                             <div class="form-group">                                 <label class="form-control-label">NOME DO CONCURSO</label>                                 <input type="text" class="form-control is-invalid" placeholder="" disabled>                             </div>                         </div>                           <div class="col-md-3">                             <div class="form-group">                                 <label class="form-control-label">DATA DO PRÓXIMO CONCURSO</label>                                 <input type="text" class="form-control is-invalid" placeholder="" disabled>                             </div>                         </div>                           <div class="col-md-3">                             <div class="form-group">                                 <label class="form-control-label">PRÊMIO DO CURSO</label>                                 <input type="text" class="form-control is-invalid" placeholder="" disabled>                             </div>                         </div>                           <div class="col-md-3">                             <div class="form-group">                                 <label class="form-control-label">QUANTIDADE DE JOGO</label>                                 <input type="text" name="qtd_cartela" class="form-control" placeholder="Escolha a quantidades de cartelas">                             </div>                         </div>                           <div class="col-md-12 text-right">                             <input type="submit" class="btn btn-success btn-sm" name="gerar" value="Gerar Cartela">                         </div>                     </div>                 </form>  
    • By mldiogo87
      Olá,
       
      Estou desenvolvendo um sistema de cadastro de artigos para minha esposa, algo amador, simples, mas que precisa de certa funcionalidade.
       
      Me deparei com a seguinte situação, existirá a tabela no MySQL categoria e artigos.
       
      Dentro da tabela artigos existirá a coluna categoria, que se relacionará com a tabela categorias por simples inner join .
       
      O problema é que surgiu a necessidade de um mesmo artigo pertencer a mais de uma categoria, assim estou pesquisando soluções.
       
      Por exemplo, na hora de cadastrar várias categorias em uma linha da tabela artigos, a melhor forma é eu inserir os números dos ID’S das categorias separado por vírgula e na hora de chamar a consulta utilizar o explode do php ?
       
      Existe uma maneira mais simples para a solução dessa problemática ?
       
      Obrigado!
       
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.