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つのテーブル(1対1の関係を持つ)を持っています。

列のある人--> 個人ID、名前、姓

そして一つ

列のある場所--> 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 に答える