Obliczenie odległości między dwiema współrzędnymi nie jest w rzeczywistości takie trudne, biorąc pod uwagę formułę 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
Odpowiedź, do której odwołuje się
Niezbędne zmiany w stosunku do oryginalnej odpowiedzi:
-
Stała podana w oryginalnej odpowiedzi dostarczała wartości w milach lub kilometrach. Zmieniłem tutaj stałą, aby pracować z licznikami.
-
Stałe zmieniły się, aby używać twoich współrzędnych. Możesz chcieć nieco bardziej dostosować zapytanie, aby te parametry zamiast stałych.
-
having
wyraz twarzy zmienił się trochę, aby odzwierciedlić twoje pragnienie 500 metrów. Ponownie, może to być coś, co chcesz sparametryzować.