1

我的计数功能有问题...我想隔离位于 G10 多边形旁边的所有多边形,并且我想计算我的多边形(社区)中的点(地铁站)的数量,但我想收到答案,即使那个答案必须为 0。

我使用了以下语句:

select a2.name, count(m.geom) 
from arr a1, arr a2, metro m 
where n1.code='G10' 
and ((st_touches(a1.geom, a2.geom)) or
(st_overlaps(a1.geom, a2.geom))) 
and ST_Contains(a2.geom, s.geom)
group by a2.name, m.geom

我知道问题and ST_Contains(a2.geom, s.geom)出在 where 子句的部分,但我现在不知道如何解决它!

4

1 回答 1

1

使用显式LEFT JOIN

SELECT  a1.name, COUNT(a2.code)
FROM    arr a1
LEFT JOIN
        arr a2
ON      ST_Intersects(a1.geom, a2.geom)
WHERE   a1.code = 'G10'

我不包括其他表,因为您在原始查询中有明显的拼写错误,并且不清楚它们应该如何连接

于 2012-11-03T22:12:02.093 回答