有一个类型
CREATE TYPE map.get_near_link AS
(link_id integer,
distance integer,
sentido integer,
geom public.geometry(4));
ALTER TYPE map.get_near_link
OWNER TO postgres;
我的表格中有一个字段near_link
,这项工作:
SELECT (near_link).link_id
FROM avl_pool
但是如果我想用我的地图表加入来获取附加信息我就不能这样做
SELECT (near_link).link_id
FROM avl_pool a
JOIN map m
ON a.near_link.link_id = m.link_id
我收到near_link
的错误。
错误:表格" near_link"缺少FROM子句条目SQL状态: 42P01性格:81
用
ON a.(near_link).link_id = v.link_id
^
错误:语法错误在或附近"(" SQL状态:42601字符:83
有没有办法进行此次加入,还是应该先获取子查询来获取link_id
,这样?
WITH getLink as (
SELECT (near_link).link_id, *
from avl_pool a
)
SELECT *
FROM getLink g
JOIN map m
ON g.link_id = m.link_id
答案 0 :(得分:2)
您需要将表别名放在连接条件中的括号内:
SELECT (a.near_link).link_id
FROM avl_pool a
JOIN map m
ON (a.near_link).link_id = m.link_id;
括号是防止解析器将字段名称解释为表名所必需的。
请参阅文档的“8.16.3。访问复合类型”部分:https://www.postgresql.org/docs/9.3/static/rowtypes.html