0

我有通过坐标计算距离的数据库函数

CREATE OR REPLACE FUNCTION distance(lat1 FLOAT, lon1 FLOAT, lat2 FLOAT, lon2 FLOAT) RETURNS FLOAT AS $$
DECLARE                                                   
    x float = 69.1 * (lat2 - lat1);                           
    y float = 69.1 * (lon2 - lon1) * cos(lat1 / 57.3);        
BEGIN                                                     
    RETURN sqrt(x * x + y * y);                               
END  
$$ LANGUAGE plpgsql;

现在我有 2 个表(有一对一的关系),一个叫做

有列的人--> Personid, name, lastname

和一个

带有列的位置--> Personid、纬度、经度。

现在我尝试使用 distnace 函数让距离小于 5 的人

我从以下查询开始首先获取 id

select loc.id,loc.latitude,loc.longitude from location loc
where distance(123,456,loc.latitude,loc.longitude)<0.5

但不知道如何从上述查询中获取具有 id 的所有人。

我怎样才能做到这一点?提前致谢。

4

1 回答 1

2

这是你要找的吗?

select p.*, loc.id,loc.latitude,loc.longitude 
from location loc inner join person p on (p.Personid=loc.Personid)
where distance(123,456,loc.latitude,loc.longitude)<0.5
于 2012-04-05T21:33:01.543 回答