Menghitung jarak antara dua koordinat sebenarnya tidak terlalu sulit mengingat rumus haversine.
SELECT
-- stuff here
, ( 6371000 * acos( cos( radians(45.815005) ) * cos( radians( stuff.lat ) ) * cos( radians( stuff.lng ) - radians(15.978501) ) + sin( radians(45.815005) ) * sin(radians(stuff.lat)) ) ) AS distance
FROM
stuff
HAVING
distance < 500
Perubahan yang diperlukan dari jawaban asli:
-
Konstanta yang ditawarkan dalam jawaban asli memberikan nilai untuk mil atau kilometer. Saya telah mengubah konstanta di sini untuk bekerja dengan meter.
-
Konstanta telah berubah untuk menggunakan koordinat Anda. Anda mungkin ingin menyesuaikan kueri sedikit lebih jauh untuk membuat parameter tersebut alih-alih konstanta.
-
having
ekspresi berubah sedikit untuk mencerminkan keinginan Anda untuk 500 meter. Sekali lagi, ini mungkin sesuatu yang ingin Anda parameterkan.