Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL - Trouver des points dans le rayon de la base de données

Je travaille actuellement sur un projet où je calcule les distances entre plusieurs emplacements. J'utilise la requête suivante pour sélectionner les object_id qui se trouvent dans un rayon donné.

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"

Je ne peux pas expliquer la formule ACOS elle-même parce que je l'ai obtenue grâce à la recherche.

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

Ceci est en kilomètres.