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

La requête SQL de géolocalisation ne trouve pas l'emplacement exact

Dans votre première requête, je crois que vous avez inversé les longitudes dans la soustraction. La loi sphérique des cosinus est :

d = acos(sin(lat1)*sin(lat2) + cos(lat1)*cos(lat2)*cos(long2−long1))*R

Si lat1 est remplacé par tblcity.latitude, long1 doit être remplacé par tblcity.longitude. Je pense que vous avez accidentellement remplacé long2 dans votre requête. Celui-ci fonctionne-t-il mieux ?

SELECT tblcity.city, tblcity.latitude, tblcity.longitude, 
truncate((degrees(acos( sin(radians(tblcity.latitude)) 
* sin(radians(45.266708)) 
+ cos(radians(tblcity.latitude)) 
* cos(radians(45.266708)) 
* cos(radians(-73.616257 - tblcity.longitude) ) ) ) 
* 69.09*1.6),1) as distance 
FROM tblcity HAVING distance < 10 ORDER BY distance desc 

Je n'ai pas encore examiné votre deuxième requête, mais j'espère que cela vous aidera.