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

Ottieni risultati da MySQL in base alla latitudine e longitudine

Puoi calcolare una distanza usando una legge sferica dei coseni :

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) - gradi in radianti
ACOS(X ) - l'arcocoseno di X, ovvero il valore il cui coseno è X
GRADI(X) - radianti in gradi

60 - minuti in una laurea
1,1515 - miglia in un miglio nautico
1.609344 - chilometri in un miglio