Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Encontrar cidades dentro de 'X' quilômetros (ou milhas)


Esta é uma consulta MySQL que fará exatamente o que você deseja. Tenha em mente que coisas assim são aproximações em geral, pois a Terra não é perfeitamente esférica nem leva em conta montanhas, colinas, vales, etc. Usamos este código em AcademicHomes.com com PHP e MySQL, ele retorna registros dentro de $radius milhas de $latitude, $longitude.
$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");