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

MySQL - Finden Sie Punkte innerhalb des Radius von der Datenbank

Ich arbeite derzeit an einem Projekt, bei dem ich Entfernungen zwischen mehreren Standorten berechne. Ich verwende die folgende Abfrage zum Auswählen von Objekt-IDs, die sich innerhalb eines bestimmten Radius befinden.

SELECT id, 
( 6371 * 
    ACOS( 
        COS( RADIANS( db_latitude ) ) * 
        COS( RADIANS( $user_latitude ) ) * 
        COS( RADIANS( $user_longitude ) - 
        RADIANS( db_longitude ) ) + 
        SIN( RADIANS( db_latitude ) ) * 
        SIN( RADIANS( $user_latitude) ) 
    ) 
) 
AS distance FROM the_table HAVING distance <= $the_radius ORDER BY distance ASC"

Ich kann die ACOS-Formel selbst nicht erklären, weil ich sie aus der Forschung habe.

db_latitude = database latitude field
db_longitude = database longitude field
$user_latitude = browser latitude coördinate
$user_longitude = browser longitude coördinate
$the_radius = the radius that you want to search in

Dies ist in Kilometern.