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 mark1978
      Boa noite srs, tem o código abaixo e esta funcionando normal e carregando o Qrcode no HTML na soma.
      Porém gostaria de alterar e que fosse da seguinte forma:
      Se "totalServico" for menor que "totalProdutos" e diferente de zero então carregue o Qr Code com esse valor
      Se não o valor for "0,00" carregue o valor "totalProdutos". Essa finalidade é para ter uma opção de desconto.
       
      <?php use Piggly\Pix\StaticPayload; class Os_model extends CI_Model { public function getProdutos($id = null) { $this->db->select('produtos_os.*, produtos.*'); $this->db->from('produtos_os'); $this->db->join('produtos', 'produtos.idProdutos = produtos_os.produtos_id'); $this->db->where('os_id', $id); return $this->db->get()->result(); } public function getServicos($id = null) { $this->db->select('servicos_os.*, servicos.nome, servicos.preco as precoVenda'); $this->db->from('servicos_os'); $this->db->join('servicos', 'servicos.idServicos = servicos_os.servicos_id'); $this->db->where('os_id', $id); return $this->db->get()->result(); } public function valorTotalOS($id = null) { $totalServico = 0; $totalProdutos = 0; if ($servicos = $this->getServicos($id)) { foreach ($servicos as $s) { $totalServico = $totalServico + $s->preco; } } if ($produtos = $this->getProdutos($id)) { foreach ($produtos as $p) { $totalProdutos = $totalProdutos + $p->subTotal; } } return ['totalServico' => $totalServico, 'totalProdutos' => $totalProdutos]; } public function getQrCode($id, $pixKey, $emitente) { if (empty($id) || empty($pixKey) || empty($emitente)) { return; } $result = $this->valorTotalOS($id); $amount = round(floatval($result['totalServico'] + $result['totalProdutos']), 2); if ($amount <= 0) { return; } $pix = (new StaticPayload()) ->applyValidCharacters() ->applyUppercase() ->setPixKey(getPixKeyType($pixKey), $pixKey) ->setMerchantName($emitente->nome, true) ->setMerchantCity($emitente->cidade, true) ->setAmount($amount) ->setTid($id) ->setDescription(sprintf("%s OS %s", $emitente->nome, $id), true); return $pix->getQRCode(); } }  

    • By AndersonWS
      Meu site está caindo muito nos últimos dias. Basicamente acessa e não aparece nada, uma tela em branco. O pessoal da hospedagem falou que tenho que otimizar o banco de dados e que o problema é esse. Acho estranho pois o mesmo site não caia e agora "do nada" tem esse problema. Fiz um teste de tracert no cmd para ver as rotas e deu a mensagem: Esgotado o tempo limite do pedido. Isso me parece o problema e não o banco de dados.
      Otimização do banco tem alguma coisa a ver com essa mensagem?
      Poderia o site por não estar muito otimizado simplesmente não mostrar nada na tela? Não deveria carregar ao menos o html?
      Se não for o local certo da pergunta me perdoem mas como falaram que o problema era o banco de dados postei aqui.
      Grato.
    • By mm_edilson
      Olá. Tenho uma página de login, que salvei como index.php. Quando o usuário entra com login e senha corretos, a página redireciona para outra página, a index2.php. É uma página independente, não sendo viável no meu projeto colocá-la como um include na página principal.
      Tudo funciona. Exceto que, se o usuário, sem logar, digitar o endereço completo da página, ou seja, www.meusite.com.br/index2.php, ela abre normalmente. Como fazer para que ela não abra, se não passar antes pela página de login?
      Esta é minha página index.php:
      </style> <?php include('app/connection.php'); ?> </head> <body> <div id="corpo"> <center><img src="app/img/logo.png" width="500" height="210"></center></div><BR> <div id="paginas"> <?php @session_start(); include('valida_user.php'); ?> </div> Esta é a página valida_user.php
      <?php @session_start(); if(isset($_POST['enviar'])){ $usuario = $_POST['usuario']; $senha = $_POST['senha']; if($usuario ==''){echo "<h4>Por favor, insira um nome de usuário válido</h4>"; }else if($senha ==''){echo "<h4>Por favor, insira sua senha</h4>"; }else{ $sql = "SELECT * FROM usuarios WHERE usuario = '$usuario' AND senha = '$senha' "; $result = mysqli_query($conexao, $sql); if(mysqli_num_rows($result) > 0){ while($res = mysqli_fetch_array($result)){ $ativo = $res['ativo']; $nivel = $res['nivel']; $usuario = $res['usuario']; $senha = $res['senha']; $email = $res['email']; $nome = $res['nome']; $cadastro = $res['cadastro']; header("Location: index2.php"); exit; } }else{ echo "<center><h3>Usuário ou senha inválidos</h3></center>"; } } } ?>  
    • By Xicara
      Olá boa tarde!
       Eu tenho um jogo e um site para cadastro de contas. E agora estou querendo implementar um sistema VIP de preferencia com dias para acabar! No meu  banco de dados do jogo, tenho a tabela: contas com os campos: id / senha / ip / e agora adicionei o campo vip, o valor é de 1 a 5 e já esta funcional no jogo porém esse beneficio está permanente para os jogadores, minha duvida é: o valor do campo vip tem como eu programar para cada 30 dias zerar novamente automático? Não zerar de todos, mais sim daquele que atingiu os 30 dias, eu estava pensando em adicionar mais um campo: data de inicio, será que tem possibilidade por exemplo o site identificar a data e excluir o valor do campo quando atingir os 30 dias?
      Obrigado pela atenção!
    • By BrunoMga07
      Pessoal alguém pode me ajudar em meu projeto, não sei muito de php e mysql mais estou com uma ideia e queria colocar em pratica, se alguém conseguir fazer e quiser combinar um valor me só mandar mensagem.
       
      Quero criar um sistema em que terá as seguintes informações:
      1° Criar conta / logar
       - Tela usuário: Perfil, Trocar Senha, Saldo da conta, recarregar saldo, sacar saldo.
       - Historico de transações.
      2° Menu Horizontal: Inicio , PPP , APOSTA , CONTATO
       - Inicio: Informações que posso adicionar.
       - PPP: pix para pix: aparece um menu vertical mostrando as opção ex:
      1 para 4 - APARECE UMA TABELA EM QUE MOSTRA O PRIMEIRO USUARIO, COM 4 ENVIOS QUE SERÁ EFETUADO POR OUTRAS PESSOAS.
      2 para 8
      3 para 12
      4 para 16
      EXEMPLO
          USUARIO 1
          ENVIAR  1 PONTO
          ENVIAR  1 PONTO
          ENVIAR  1 PONTO
          ENVIAR  1 PONTO
          USUARIO 2
          ENVIAR  1 PONTO
          ENVIAR  1 PONTO
          ENVIAR  1 PONTO
          ENVIAR  1 PONTO
          USUARIO 3
          ENVIAR  1 PONTO
          ENVIAR  1 PONTO
          ENVIAR  1 PONTO
          ENVIAR  1 PONTO
      Quando o usuario enviar 1 ponto para o usuario 1 ele será adicionado em usuario 2 esperando a vez dele para receber pontos.
      se já tiver um usuario 2 ele será incluido no usuario 3, quando o usuario 1 estiver completo ele será removido da lista
      e podera participar novamento. Só será possivel 1 envio de ponto por usuario.
      algumas regras: se o usuario 1 não estiver completo com 4 envios de 4 usuarios diferente não passa para o usuario 2. e quando algum usuario envia um ponto será removido 1 ponto dele e enviado para o usuario que ele enviou.
×

Important Information

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