2012-11-03 49 views
1

我有一個計數函數的問題... 我想要隔離G10多邊形旁邊的所有多邊形,並且要計算我的多邊形中的點數(地鐵站) (街區),但我想收到答案,即使這個問題的答案必須是0即使回答爲0,Postgis使用包含並計數

我用下面的語句:

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子句的and ST_Contains(a2.geom, s.geom)一部分,但我現在不怎麼解決它!

+0

什麼'n1'和你的查詢中有's'嗎? 'metro'如何連接到'arr'? – Quassnoi

+0

怎麼樣,s是m我不知道我爲什麼寫S,而地鐵是地鐵站,他們位於「arr」區。我想選擇位於G10區旁邊的所有地區,並計算其中有多少個電臺......但是有一個地區沒有電臺,所以它沒有被選中,我希望它被選中並出現在「0」代表不計數! – user1797130

+0

請發佈您的架構並更新查詢。什麼是'n1'? – Quassnoi

回答

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' 

我不包括其他的表,因爲你有明顯的錯別字在原始查詢,也不清楚他們應該如何連接

相關問題