SQL错误:表多次指定

时间:2012-08-17 13:52:33

标签: sql database postgresql

我正在尝试在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 )

3 个答案:

答案 0 :(得分:12)

你加入了两次。如果需要这样做,请为其中一个联接指定别名

e.g。

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

重复联接标记在

下方
**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 :(得分:3)

正如错误所述,您在源表中列出了两次相同的表fat_unidades。当您在数据表达式中提及fat_unidades时,数据库引擎无法分辨您引用的表,因为两个引用具有相同的名称。您必须在至少一个对fat_unidades的引用上使用具有不同名称的表别名,以便对该表的每个引用具有不同的名称。

答案 2 :(得分:0)

使用不同的表别名