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 manolegal
      Bom dia
      Tenho uma variável que traz vários dados de ID_LANÇAMENTO
      var_dump($meus_ids); array 0 => string '829' (length=3) 1 => string '830' (length=3) 2 => string '828' (length=3) Preciso fazer uma soma das quantidades constantes nestes 3 lançamentos e trazer em variável, porém variável está trazendo cada quantidade em separado, ao invés da soma.
      foreach($meus_ids as $item){ $Sql_lim = "SELECT SUM(CASE WHEN quantidade >= 11 then 10 else quantidade end) as quantidades_limite FROM minha_tabela WHERE id_lancamento = $item"; $Resultado_lim = executa($Sql_lim); $total_registros_lim = @pg_num_rows($Resultado_lim); while ($linha_lim = @pg_fetch_assoc($Resultado_lim)){ $quantidade_limite_consulta = $linha_lim["quantidades_limite"]; } // Fecha "while" } // Fecha foreach Utilizo BD Postgresql.
      O total de linhas retornadas é 1, o que em tese está correto.
      O problema é que ao invés de trazer a soma das quantidades, a variável está trazendo cada quantidade individualizada por lançamento. Onde posso estar errando?
    • By Sapinn
      Galera pergunta rápida eu adicionei em um coluna sem querer o fulltext como faço para remover ???
    • By igor8831
      Boa tarde pessoal  
      minha pergunta é simples
      tenho uma consulta que retorna
       
      produto   valor
      bala           10,00
      doce          30,00
      laranja       14,00
      banana      16,00
       
      então, precisaria receber em variavel que eu possa dar um echo ou em algum campo da seguinte forma
      10,00, 30,00, 14,00, 16,00
       
      Aguém pode me ajudar?
       
      Obrigado por hora....
    • By Brunorieper
      Boa tarde, meu site acabou sendo invadido e apos um breve estudo achei um redireccionamento <script>window.location.replace("https://cartoonmines.com/scount");window.location.href = "https://cartoonmines.com/scount";</script> porem não consigo saber onde está alguém já teve este problema? 
       
      Obrigado


    • By Rodrigo V
      Boa tarde pessoal, sou novo aqui e não sei se o conteúdo que estou postando está no lugar correto.
      Estou com uma dúvida no ajax de uma requisição onde o retorno do banco popula o meu select, mas o problema é que  meu select devido possuir muitos dados ( em torno de 3000 options) quando retorna o navegador da uma leve travada mas no navegado do celular(com android 9) e trava ao ponto de ter que fechar aplicação. Acredito que teria que fazer um option que carregue por demanda algo assim, mas não sei se o meu pensamento está correto, e se estiver não sei como fazer... se alguém conseguir me ajudar agradeço. segue abaixo  códigos:
       
      onde é populado o select
                 <div class="col-md-2">             <select class="btao1" id="resultados"></select>             <input id="btao1" type="submit" value="Conferir" />           </div>  
      requisicao ajax
      <script>   $(document).ready(function() {     select_resultados()     });     function select_resultados() {     $.ajax({       url: 'select_resultados.php',       method: 'GET',       success: function(dados) {         $('#resultados').html(dados);       }     });   }   </script>  
      pagina php que busca no banco 
       
      $query_select = "SELECT * FROM resultados ORDER BY id DESC"; $result_select = $connect->prepare($query_select); $result_select->execute();   while($resultado_select = $result_select->fetch(PDO::FETCH_ASSOC)){     extract($resultado_select);     echo '         <option value='.$id.'>'.$name.'</option>'; }  
       
×

Important Information

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