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

Recherche de villes à moins de 'X' kilomètres (ou miles)

Il s'agit d'une requête MySQL qui fera exactement ce que vous voulez. Gardez à l'esprit que des choses comme celle-ci sont généralement des approximations, car la terre n'est pas parfaitement sphérique et cela ne prend pas en compte les montagnes, les collines, les vallées, etc. Nous utilisons ce code sur AcademicHomes.com avec PHP et MySQL, il renvoie les enregistrements dans un rayon de $ miles 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");