3

I'm trying to execute the following sql instruction in PostgreSQL and when I do that the following error occurs:

table name "fat_unidades" specified more than once".

Any Help?

SELECT  amb_recepcao.sequencial, amb_recepcao.cod_und_atend, atend.nome_fantasia as uni_atendimento
, amb_recepcao.cod_profissional, profissional.nom_pessoa as nom_profissional
, amb_recepcao.cod_atividade, fat_atividades.nom_atividade, amb_recepcao.tipo_pessoa
, amb_recepcao.cod_undpaciente, uni_pacie.nome_fantasia as nom_unidpaciente
, amb_recepcao.cod_paciente, pacie.nom_pessoa as paciente, amb_recepcao.cod_pessoa
, pessoas.nom_pessoa, amb_recepcao.cod_sintoma, amb_sintomas.nom_sintoma
, amb_recepcao.data_atendimento, amb_recepcao.hora_atendimento, amb_recepcao.motivos
, amb_recepcao.acoes_realizadas, amb_recepcao.senha_atendimento
FROM amb_recepcao
LEFT JOIN fat_unidades             ON ( fat_unidades.cod_unidade = amb_recepcao.cod_und_atend )
LEFT JOIN entidades atend          ON ( atend.cod_entidade = fat_unidades.cod_entidade )
LEFT JOIN fat_atividades           ON ( fat_atividades.cod_atividade = amb_recepcao.cod_atividade )
LEFT JOIN entidades uni_pacie      ON ( uni_pacie.cod_entidade = fat_unidades.cod_entidade )
LEFT JOIN pacientes                ON ( pacientes.cod_paciente = amb_recepcao.cod_paciente )
LEFT JOIN fat_unidades             ON ( fat_unidades.cod_unidade = amb_recepcao.cod_undpaciente )
LEFT JOIN pessoas    pacie         ON ( pessoas.cod_pessoa = pacientes.cod_pessoa )
LEFT JOIN pessoas                  ON ( pessoas.cod_pessoa = amb_recepcao.cod_pessoa )
LEFT JOIN amb_sintomas             ON ( amb_sintomas.cod_sintoma = amb_recepcao.cod_sintoma )
LEFT JOIN profissionais            ON ( profissionais.cod_profissional = amb_recepcao.cod_profissional )
LEFT JOIN pessoas     profissional ON ( pessoas.cod_pessoa = profissionais.cod_pessoa )
1
  • 2
    Well, the message isn't lying. You specified it twice. Commented Aug 17, 2012 at 13:55

3 Answers 3

13

You have joined to it twice. If you need to do this, specify an alias for one of your joins,

e.g.

LEFT JOIN fat_unidades AS f1 ON f1.cod_unidade ...

The duplicate join is marked below

**LEFT JOIN fat_unidades** ON ( fat_unidades.cod_unidade = amb_recepcao.cod_und_atend )   
LEFT JOIN entidades atend ON ( atend.cod_entidade = fat_unidades.cod_entidade ) 
LEFT JOIN fat_atividades ON ( fat_atividades.cod_atividade = amb_recepcao.cod_atividade ) 
LEFT JOIN entidades uni_pacie ON ( uni_pacie.cod_entidade = fat_unidades.cod_entidade ) 
LEFT JOIN pacientes ON ( pacientes.cod_paciente = amb_recepcao.cod_paciente ) 
**LEFT JOIN fat_unidades** ON ( fat_unidades.cod_unidade = amb_recepcao.cod_undpaciente ) 
LEFT JOIN pessoas pacie ON ( pessoas.cod_pessoa = pacientes.cod_pessoa )
LEFT JOIN pessoas ON ( pessoas.cod_pessoa = amb_recepcao.cod_pessoa ) 
LEFT JOIN amb_sintomas ON ( amb_sintomas.cod_sintoma = amb_recepcao.cod_sintoma ) 
LEFT JOIN profissionais ON ( profissionais.cod_profissional = amb_recepcao.cod_profissional ) 
LEFT JOIN pessoas profissional ON ( pessoas.cod_pessoa = profissionais.cod_pessoa )
Sign up to request clarification or add additional context in comments.

Comments

3

Just as the error states, you have the same table fat_unidades listed twice among the source tables. The database engine can't tell which table you are referring to when you mention fat_unidades in data expressions because both references have the same name. You have to use a table alias with a different name on at least one references to fat_unidades so that each reference to that table has a different name.

Comments

1

Use different table alias name

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.