sql >> Base de Datos >  >> RDS >> Mysql

MySQL:encuentre puntos dentro del radio de la base de datos

Actualmente estoy trabajando en un proyecto en el que estoy calculando distancias entre múltiples ubicaciones. Estoy usando la siguiente consulta para seleccionar object_id que están dentro de un radio dado.

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"

No puedo explicar la fórmula de ACOS en sí porque la obtuve de la investigación.

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

Esto está en kilómetros.