3

PostgreSQLで次のSQL命令を実行しようとしていますが、実行すると次のエラーが発生します。

テーブル名「fat_unidades」が複数回指定されました」。

ヘルプはありますか?

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 )
4

3 に答える 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 )
于 2012-08-17T13:56:47.420 に答える
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.

于 2012-08-17T13:57:24.550 に答える
1

Use different table alias name

于 2012-08-17T13:55:05.737 に答える