Mysql
 sql >> Database >  >> RDS >> Mysql

Trovare città entro 'X' chilometri (o miglia)

Questa è una query MySQL che farà esattamente quello che vuoi. Tieni presente che cose del genere sono generalmente approssimazioni, poiché la terra non è perfettamente sferica né tiene conto di montagne, colline, valli, ecc. Usiamo questo codice su AcademicHomes.com con PHP e MySQL, restituisce record entro $miglia di raggio di $latitudine, $longitudine.

$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");