Jua*_*eza 0 sql postgresql join custom-type
有类型
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;
Run Code Online (Sandbox Code Playgroud)
我的表有一个字段near_link和这项工作:
SELECT (near_link).link_id
FROM avl_pool
Run Code Online (Sandbox Code Playgroud)
但是如果我想与我的地图表 JOIN 以获得附加信息,我不能这样做
SELECT (near_link).link_id
FROM avl_pool a
JOIN map m
ON a.near_link.link_id = m.link_id
Run Code Online (Sandbox Code Playgroud)
我有错误near_link。
错误:缺少表“near_link”SQL 状态的 FROM 子句条目:42P01 字符:81
和
ON a.(near_link).link_id = v.link_id
^
Run Code Online (Sandbox Code Playgroud)
错误:“(”处或附近的语法错误 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
Run Code Online (Sandbox Code Playgroud)
您需要将表别名放在连接条件的括号内:
SELECT (a.near_link).link_id
FROM avl_pool a
JOIN map m
ON (a.near_link).link_id = m.link_id;
Run Code Online (Sandbox Code Playgroud)
括号是必要的,以防止解析器将字段名称解释为表名称。
请参阅文档的“8.16.3. 访问复合类型”部分:https ://www.postgresql.org/docs/9.3/static/rowtypes.html