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

Obtenir les résultats de mysql en fonction de la latitude et de la longitude

Vous pouvez calculer une distance en utilisant une loi sphérique des cosinus :

SELECT DEGREES(ACOS(SIN(RADIANS(clients.latitude)) * SIN(RADIANS(schools.latitude)) + 
                    COS(RADIANS(clients.latitude)) * COS(RADIANS(schools.latitude)) 
                                                   * COS(RADIANS(clients.longitude 
                                                               – schools.longitude)))) 
       * 60 * 1.1515 * 1.609344 AS distance
FROM clients, schools HAVING distance < $radius

RADIANS(X) - degrés en radians
ACOS(X ) - l'arc cosinus de X, c'est-à-dire la valeur dont le cosinus est X
DEGRÉS(X) - radians en degrés

60 - minutes dans un degré
1,1515 - miles dans un mile nautique
1,609344 - kilomètres dans un mile