Postgresql Postgis使用contains和count,即使答案为0

Postgresql Postgis使用contains和count,即使答案为0,postgresql,postgis,Postgresql,Postgis,我的计数函数有问题。。。 我想隔离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_Conta

我的计数函数有问题。。。 我想隔离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

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

使用显式的
左连接

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

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

使用显式的
左连接

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

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

您的查询中的
n1
s
是什么?
metro
如何连接到
arr
?如何连接,s是m我不知道我为什么写s。地铁是地铁站,它们位于“arr”地区。我想选择位于G10地区旁边的所有地区,并计算其中有多少个车站。。。但有一个地区没有车站,因此它没有被选中,我希望它被选中,并显示为“0”的nb的计数,而不是不出现在所有!请发布您的架构并更新查询。什么是
n1
?查询中的
n1
s
是什么?
metro
如何连接到
arr
?如何连接,s是m我不知道我为什么写s。地铁是地铁站,它们位于“arr”地区。我想选择位于G10地区旁边的所有地区,并计算其中有多少个车站。。。但有一个地区没有车站,因此它没有被选中,我希望它被选中,并显示为“0”的nb的计数,而不是不出现在所有!请发布您的架构并更新查询。什么是
n1