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

Geolocation SQL-forespørgsel finder ikke den nøjagtige placering

I din første forespørgsel tror jeg, du har inverteret længdegraderne i subtraktionen. Den sfæriske lov om cosinus er:

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

Hvis lat1 er erstattet med tblcity.latitude, skal long1 erstattes med tblcity.longitude. Jeg tror, ​​du ved et uheld har erstattet long2 i din forespørgsel. Virker denne bedre?

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 

Jeg har ikke undersøgt din anden forespørgsel endnu, men forhåbentlig hjælper det.



  1. Find afhængigheder i SQL Server:sql_expression_dependencies

  2. SQL Server 2008 Vertikale data til vandret

  3. ikke tilladt at returnere et resultatsæt fra en trigger mysql

  4. give fjernadgang til MySQL-database fra enhver IP-adresse