来自同一表

时间:2015-11-09 18:26:41

标签: sql distance postgis

这可能是一个非常简单的查询,但出于某种原因,我只是想不出来.. 我有一张有城市(城市)的桌子,我希望得到伦敦(cities.city_name ='London')和Dundee之间的距离。这是我的问题:

SELECT 
cities.city_name, ST_Distance(cities.the_geom,cities.the_geom)
from cities 
WHERE cities.city_name in ('London','Dundee')

结果是在两个城市的输出的ST_Distance字段中为0。 我知道我错过了什么,但我不知道是什么。我假设我必须为2个城市设置别名,但我不知道如何。

有人可以帮我解决这个问题吗?

提前感谢!!

1 个答案:

答案 0 :(得分:1)

您正在比较查询中同一点之间的距离:

ST_Distance(cities.the_geom,cities.the_geom) --compares the same column in the list of the two cities:

CITY   | GEOM  |  DISTANCE
-----------------------------------
London | GEOM1 | DISTANCE (GEOM1, GEOM1)
Dundee | GEOM2 | DISTANCE(GEOM2, GEOM2)

希望你能从上面的表格中看到我的观点

也许是这样的:

SELECT ST_Distance(
    (SELECT the_geom FROM cities WHERE city_name ='London'),
    (SELECT the_geom FROM cities WHERE city_name ='Dundee')
)