我有三张表,分别是 "线","点_a","点_b".我想从两张表中找到距离 "线 "1.5米范围内的所有点。
从一个表中找到点是没有问题的,但我不知道如何添加第二个表中的点。
SELECT * from lines l
JOIN points_a a ON (ST_DWithin(l.geom, a.geom, 1.5)
但我不知道如何添加第二张表的点数. 当我添加下一个Join时,我得到的是:点数都在同一行buffor,当其中只有一个是缓冲区时,我没有得到它们。
只有当它们在两个缓冲区中时,你才会得到它们,原因是你使用内部连接来创建这个查询--这将排除任何一个 ON
子句为假。
你可以将CTE(或子查询)中的点汇总,然后JOIN。
WITH points AS (
SELECT geom FROM points_a
UNION ALL
SELECT geom FROM points_b
)
SELECT
*
FROM
lines l
JOIN
points p ON ST_DWithin(l.geom, p.geom, 1.5)
像这样的方法就可以了
SELECT * from (select * from lines union all select * from lines2) l
JOIN points_a a ON (ST_DWithin(l.geom, a.geom, 1.5)
或者
SELECT * from lines l1
JOIN points_a a ON (ST_DWithin(l1.geom, a.geom, 1.5)
union all
SELECT * from lines l2
JOIN points_a a ON (ST_DWithin(l2.geom, a.geom, 1.5)
问候,Bjarni