• 0
Sign in to follow this  
lucasraniere

Inner Join com a mesma tabela

Question

Olá a todos, sou novo no fórum e na verdade esse é o primeiro post que faço em um fórum.

Trabalho em uma empresa de plano de assistência médico/hospitalar e estou desenvolvendo um sistema para controle de guias de pedidos de exames ambulatoriais e consultas médicas. Quando alguma dessas guias está incorreta, devolvo ela para o prestador de serviço que realizou a consulta ou exame. O objetivo do sistema é automatizar esse controle. Na parte de programação está tudo encaminhando bem. O problema é que tenho uma dúvida no select do banco PostgreSQL.

Dentre todas as tabelas tenho uma tabela chamada "prestador" onde é salvo todos os médicos, laboratórios, hospitais, etc. E tem uma tabela que chama "guia" é salvo as guias para serem devolvidas. Na tabela "guia" tenho dois campos, "solicitante_guia" e "executante_guia" que são chaves estrangeiras da tabela "prestador", por exemplo, na guia vou preencher qual prestador solicitou o exame, e qual prestador realizou(executou) o exame. No insert não tive problemas, tive problema no select dessas informações.

Segue abaixo a tabela:

CREATE TABLE guia (
    id_guia serial NOT NULL,
    senha_guia integer,
    numero_guia varchar,
    grupo_guia integer,
    carteira_guia varchar,
    beneficiario_guia varchar,
    parecer_guia integer,
    solicitante_guia integer,
    executante_guia integer,
    atendimento_guia integer,
    situacao_guia integer,
    status_guia integer NOT NULL,
    obs_guia varchar,
    CONSTRAINT pk_guia PRIMARY KEY (id_guia),
    CONSTRAINT fk_guia_grupo FOREIGN KEY (grupo_guia) REFERENCES grupo (id_grupo),
    CONSTRAINT fk_guia_parecer FOREIGN KEY (parecer_guia) REFERENCES parecer (id_parecer),
    CONSTRAINT fk_guia_solicitante FOREIGN KEY (solicitante_guia) REFERENCES prestador (id_prestador),
    CONSTRAINT fk_guia_executante FOREIGN KEY (executante_guia) REFERENCES prestador (id_prestador),
    CONSTRAINT fk_guia_atendimento FOREIGN KEY (atendimento_guia) REFERENCES atendimento (id_atendimento),
    CONSTRAINT fk_guia_situacao FOREIGN KEY (situacao_guia) REFERENCES situacao (id_situacao),
    CONSTRAINT fk_guia_status FOREIGN KEY (status_guia) REFERENCES status (id_status)
);
 

SELECT * FROM guia
    INNER JOIN grupo ON grupo.id_grupo = guia.grupo_guia
    INNER JOIN parecer ON parecer.id_parecer = guia.parecer_guia
 ->->->    INNER JOIN prestador ON prestador.id_prestador = guia.solicitante_guia  
 ->->->    INNER JOIN prestador ON prestador.id_prestador = guia.executante_guia
    INNER JOIN atendimento ON atendimento.id_atendimento = guia.atendimento_guia
    INNER JOIN situacao ON situacao.id_situacao = guia.situacao_guia
    INNER JOIN status ON status.id_status = guia.status_guia

 

 

ERRO DO SELECT

ERROR:  table name "prestador" specified more than once

********** Error **********

ERROR: table name "prestador" specified more than once
SQL state: 42712

 

O que estou fazendo de errado? Como podem ver sou muito leigo com relação a banco de dados (minha única DP na Faculdade rsrsrs).

Desde já, muito obrigado.

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

faz isso:

...INNER JOIN prestador ON (prestador.id_prestador = guia.solicitante_guia  )
INNER JOIN prestador as prestador_2 ON (prestador_2.id_prestador = guia.executante_guia )....

como diz o próprio erro  "table name "prestador" specified more than once", você já informou essa tabela, so da um outro nome pra ela.

Share this post


Link to post
Share on other sites
  • 0
13 minutos atrás, CRenan disse:

faz isso:

...INNER JOIN prestador ON (prestador.id_prestador = guia.solicitante_guia  )
INNER JOIN prestador as prestador_2 ON (prestador_2.id_prestador = guia.executante_guia )....

como diz o próprio erro  "table name "prestador" specified more than once", você já informou essa tabela, so da um outro nome pra ela.

Muito obrigado CRenan. Deu certo aqui.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this