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

Búsqueda de ciudades dentro de 'X' kilómetros (o millas)

Esta es una consulta de MySQL que hará exactamente lo que quieres. Tenga en cuenta que este tipo de cosas son generalmente aproximaciones, ya que la Tierra no es perfectamente esférica ni tiene en cuenta montañas, colinas, valles, etc. Usamos este código en Casasacadémicas.com con PHP y MySQL, devuelve registros dentro de $radio millas de $latitud, $longitud.

$res = mysql_query("SELECT
    * 
FROM
    your_table
WHERE
    (
        (69.1 * (latitude - " . $latitude . ")) * 
        (69.1 * (latitude - " . $latitude . "))
    ) + ( 
        (69.1 * (longitude - " . $longitude . ") * COS(" . $latitude . " / 57.3)) * 
        (69.1 * (longitude - " . $longitude . ") * COS(" . $latitude . " / 57.3))
    ) < " . pow($radius, 2) . " 
ORDER BY 
    (
        (69.1 * (latitude - " . $latitude . ")) * 
        (69.1 * (latitude - " . $latitude . "))
    ) + ( 
        (69.1 * (longitude - " . $longitude . ") * COS(" . $latitude . " / 57.3)) * 
        (69.1 * (longitude - " . $longitude . ") * COS(" . $latitude . " / 57.3))
    ) ASC");