Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL Great Circle Distance (Haversine-Formel)

Von Google Code FAQ – Erstellen von a Store Locator mit PHP, MySQL &Google Maps :

Hier ist die SQL-Anweisung, die die nächsten 20 Orte findet, die sich in einem Umkreis von 25 Meilen um die Koordinate 37, -122 befinden. Es berechnet die Entfernung basierend auf dem Breiten-/Längengrad dieser Zeile und dem Ziel-Breiten-/Längengrad und fragt dann nur nach Zeilen, in denen der Entfernungswert kleiner als 25 ist, ordnet die gesamte Abfrage nach Entfernung und begrenzt sie auf 20 Ergebnisse. Um nach Kilometern statt nach Meilen zu suchen, ersetzen Sie 3959 durch 6371.

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) 
* cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin(radians(lat)) ) ) AS distance 
FROM markers 
HAVING distance < 25 
ORDER BY distance 
LIMIT 0 , 20;