Postgresql中有一个表条目,但不能在查询的这一部分中引用它

时间:2018-11-13 05:17:37

标签: sql postgresql

我的选择查询有问题

select distinct l.*, tmp_addr.address from l.lic as l 
left join l.hou as h on l.lic_id=h.lic_guid 
left join l.org as o on o.org_id=l.org_guid
LEFT JOIN (
SELECT address
    FROM dblink('sm_d','SELECT * FROM 
sm.func_get(' || COALESCE(QUOTE_LITERAL(h.hguid), 'NULL') || ',  TRUE, ''sm'')')
                AS addr(full_address TEXT, address_guid TEXT)
) AS tmp_addr ON h.house_address_guid=tmp_addr.address_guid
where o.root_organization_ref_guid='b26961ae-f015' and l.status <> 'INACTIVE' and l.version='true' and h.registry_status_type='INCLUDED';
  

SQL错误[42P01]:错误:对表“ h”的FROM子句条目的引用无效      表“ h”有一个条目,但不能在查询的这一部分中引用它。     位置:348

1 个答案:

答案 0 :(得分:0)

这看起来真的很奇怪:

select distinct l.*, tmp_addr.address 
FROM l.lic as l 
left join l.hou as h on l.lic_id=h.lic_guid 
left join l.org as o on o.org_id=l.org_guid

l.lic as l-您正在将LIC表的别名设置为l

left join l.hou as h-现在,当您说l.hou时,表示hou是表l中的一列。但是您将其用作表格。

left join l.org as o-与上述相同。

因此,如果l是数据库中存储这些表的架构,则建议您使用l以外的别名。

如果l不是架构,只需从ll.hou中删除l.org。而是说houorg

这应该可以修复错误。让我知道是否有帮助。