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

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

例如

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 )
于 2012-08-17T13:56:47.420 回答
3

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

于 2012-08-17T13:57:24.550 回答
1

使用不同的表别名

于 2012-08-17T13:55:05.737 回答