Jump to content
erikalopes

[Resolvido] [ Dúvida ] - Inner Join

Recommended Posts

Olá pessoas, eu estou estudando Banco de Dados (postgresql com pgadmin3) e

criei as seguintes tabelas (Foto), e agora eu preciso selecionar nome de medico e paciente que estão na tabela consulta,

eu tentei de algumas maneiras como esta abaixo, filtrando por nome da clinica, porém ele me dá esse erro:

 

ERROR:  table name "pessoa" specified more than once

 

-----------------------------------------------------------------------------------------------------------------------------------------

Citar

select paciente.nome "Paciente",medico.nome "Medico",clinica.nome "Clinica" from pessoa
inner join paciente
on pessoa.id= paciente.pessoa_id
inner join consulta
on paciente.id=consulta.paciente_id
inner join medico
on medico.id=consulta.medico_id
inner join pessoa
on pessoa.id=medico.pessoa_id
inner join clinica
on clinica.id=consulta.clinica_id
where clinica="Saúde Mais"

-----------------------------------------------------------------------------------------------------------------------------------------

alguém poderia me ajudar a filtrar essas informações usando inner join?

Captura de tela de 2019-09-12 15-33-31.png

Share this post


Link to post
Share on other sites

o erro é claro: você está citando duas vezes a tabela "pessoa";

elimine uma dessas citações.

Share this post


Link to post
Share on other sites

No MySQL usei o artificio dos "Alias" também. Veja meu exemplo:

SELECT 
	tbl_pedidos.N_Pedido AS N_Pedido,
	tbl_itens_pedido.N_Controle AS N_Controle,
	tbl_pedidos.Dia AS Dia,
	tbl_pedidos.Cliente AS Cod_Cliente,
	tbl_contatos_cli.Contato AS Cliente, /*AQUI*/
	tbl_pedidos.Vendedor AS Cod_Vendedor,
	tbl_contatos_ven.Contato AS Vendedor, /*AQUI*/
	tbl_pedidos.Filial AS Cod_Filial,
	tbl_filiais.Filial AS Filial,
	tbl_itens_pedido.Produto AS Cod_Produto,
	tbl_produtos.Produto AS Produto,
	tbl_itens_pedido.Quantidade AS Quantidade,
	tbl_itens_pedido.Valor AS Valor,
	tbl_itens_pedido.Pago AS Pago 
from tbl_pedidos 
	JOIN tbl_itens_pedido ON tbl_pedidos.N_Pedido = tbl_itens_pedido.N_Pedido
	JOIN tbl_produtos ON tbl_itens_pedido.Produto = tbl_produtos.Cod
	JOIN tbl_filiais ON tbl_pedidos.Filial = tbl_filiais.Cod
	JOIN tbl_contatos AS tbl_contatos_cli ON tbl_pedidos.Cliente = tbl_contatos_cli.Cod
	JOIN tbl_contatos AS tbl_contatos_ven ON tbl_pedidos.Vendedor = tbl_contatos_ven.Cod
order by tbl_pedidos.Dia DESC, tbl_pedidos.Cliente, tbl_pedidos.Vendedor, tbl_itens_pedido.Pago;

Observe a penúltima e antepenúltima linha.

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 Mucio Willamys
      olá, gostaria da ajuda de vcs :
      este código traz as informações do banco de dados e as coloca dentro de um select html
      é parte de um projeto de um sistema de uma clínica médica, onde ao cadastrar os médicos posso escolher a especialidade do mesmo.
      <select name="especialidade" required="">                 <option value="" >--Escolha uma especialidade--</option>          <?php              $result_especialidade = "select * from especialidade";              $result_especialidade = mysqli_query($bd, $result_especialidade);              while ($row_especialidade = mysqli_fetch_assoc($result_especialidade)){ ?>                    <option value="<?php echo $row_especialidade['id']; ?>"><?php echo  $row_especialidade['nome']; ?> </option> public function editar($id){ include "Bd.class.php"; $nome = $this->nome; $cpf = $this->cpf; $crm = $this->crm; $especialidade = $this->especialidade; $query = "update medico set nome = '$nome', cpf = '$cpf', crm = '$crm', especialidade_id = '$especialidade' where id = $id"; $status = $bd->query($query); return $status; } Acima ^ está a função editar...
       
       
       
      abaixo está o form com as informações do médico.
      <form method="POST" action="../controller/Controller-medico.php?op=e"> <input type="hidden" name="id" size="5" value="<?php echo $id; ?>" > <div class="campo"> <label for="nome">Nome: </label> <input type="nome" name="nome" size="30" value="<?php echo $m->getNome() ?>"> </div> <div class="campo"> <label for="cpf">CPF: </label> <input type="text" name="cpf" size="30" value="<?php echo $m->getCpf() ?>"> </div> <div class="campo"> <label for="rg">CRM: </label> <input type="text" name="crm" size="30" value="<?php echo $m->getCrm() ?>"> </div> <div class="campo"> <label for="especialidade"> Especialidade: </label> </div> <div class="campo"> <input type="submit" value="Atualizar"> </div> </form> Gostaria de saber como faço pra setar um input ou um select no caso para a alteração do dado(especialidade)?
    • By Marcosvn
      Estou trabalhando num projeto que será semelhante a um fórum de discussão. No entanto, além de criar o tópico, o usuário deverá responder a um questionário com 40 perguntas. Essas perguntas serão armazenadas e exibidas posteriormente em forma de gráficos com o resultado estatístico de todos os usuários que responderam o questionário.
       
      Minha pergunta é: mysql seria uma boa escolha para esse projeto?
       
      Com o tempo, conforme a quantidade de respostas aumenta, não ficaria muito lento o calculo e exibição dos gráficos?
       
      Qual o melhor caminho a seguir para eu não ter problemas de velocidade no futuro?
       
      abraço
       
       
    • By Jefferson andre
      Saudações mestres,
       
      Preciso de ajuda em um pequeno programa que faz a contagem de acessos ao site, ele abre o banco de dados corretamente e a partir dai ja da problemas retornando a mensagem:
      Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, object given in C:\xampp\htdocs\xcompbrasil\contador.php on line 10
      Warning: mysqli_query() expects parameter 1 to be mysqli, object given in C:\xampp\htdocs\xcompbrasil\contador.php on line 24
       
      A tabela contador possui o campo codigo INT 11 sem auto inclemento e sem indice, o conteudo foi colocado manual sendo o numero 213
       
      segue  o programa de conexao.php
      <?php ini_set('error_reporting', E_ALL); ini_set('log_errors' , TRUE); ini_set('html_errors' , TRUE); ini_set('display_errors' , TRUE); // production: FALSE, development: TRUE $host_local = "localhost"; $db_local = "baseprincipal"; $user_local = "root"; $pass_local = ""; $arquivo = new PDO("mysql:host=$host;dbname=$db", $user, $pass); try { } catch (PDOException $e) { echo "Error : " . $e->getMessage() . "<br/>"; die(); } ?> Segue o programa contador.php
      <?php // fazendo uma conexão com o banco de dados include_once 'conexao.php'; $arquivo->beginTransaction(); $consulta = $arquivo->query("SELECT * FROM contador"); $linha=mysqli_fetch_array($consulta); // igualar a array a uma variavel $cod = $linha["codigo"]+1; echo $cod; $arquivo->commit(); // lista a variavel echo "<font face='Arial'><span class='style1'>$cod</span></font>"; $sql = "UPDATE contador SET codigo=$cod"; if (mysqli_query($arquivo, $sql)) { // echo "Alteração efetuada com sucesso"; } else { // echo "Erro alterando o contador de visitas: " . mysqli_error($arquivo); } // fecha a conexao $arquivo = null; ?> Agradeço a atenção
    • By Filipe556
      alguém tem ideia de algum método de bloquear usuário por ip
    • By Sapinn
      Salve! Estou desenvolvendo um sistema de mensagens para o meu site no qual o ADM envia a mensagem para todos os usuarios ou ele pode digitar o email de um usuaio e será enviado apenas para este usuario especifico, além disso, o usuario recebe um tipo de notificação que informa que tem uma nova mensagem. O problema está sendo justamente nesta segunda parte não consigo pensar em uma logica para que a mensagem destinada a apenas um usuario so seja notificado ele.
      Alguém pode me ajudar
      vejam meu codigo
       
      <?php //conexao com o banco de dados include '../php/conexao.php'; //pega a tabela mensagem $query = mysql_query("select * from mensagem")or die(mysql_error //ver todos os dados que tem nela while($mensagem = mysql_fetch_assoc($query)){ //verifica na tabela ler se o codigo do aluno é igual ao codigo do usuario logado se tem alguma mensagem na tabela e se o email do destinatario é igual //ao do usuario logado $ver = mysql_query("SELECT * FROM ler where codigo_aluno='".$row['id']."' and codigo_mensagem= '".$mensagem['id']."' and destinatario ='".$row['email']."'")or die(mysql_error); } //se for igual ao 0 ou seja não tiver tudo ok significa que ele não leu a mensagem então mostra a notificação if(mysql_num_rows($ver) == 0){ ?> <span class="app-menu__label">Mensagens</span> <i><img src="../img/icone/menu/sino_mensagem.png" width="26px" height="26px"></i></a> </li> <?php //se não ele não mostro porque ela já foi lida }else{ ?> <span class="app-menu__label">Menssagem</span></a> </li> <?php } ?> Preciso de ajuda acho que o erro é na minha logica 
×

Important Information

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