Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapytanie SQL geolokalizacji nie znajduje dokładnej lokalizacji

Uważam, że w swoim pierwszym zapytaniu odwróciłeś długości geograficzne w odejmowaniu. Sferyczne prawo cosinusów to:

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

Jeśli lat1 zostanie zastąpione przez tblcity.latitude, long1 musi zostać zastąpione przez tblcity.longitude. Wydaje mi się, że przypadkowo podstawiłeś w zapytaniu ciąg long2. Czy ten działa lepiej?

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 

Nie zajrzałem jeszcze do twojego drugiego zapytania, ale mam nadzieję, że to pomoże.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Projekt bazy danych:3 typy użytkowników, oddzielne czy jedna tabela?

  2. MySQL wybierz losowy wiersz z JOIN z dwóch tabel

  3. Tabela aktualizacji mysql ajax według klasy

  4. Jak wyłączyć wyzwalacze w MySQL?

  5. PHP:Pokaż okno dialogowe potwierdzenia tak/nie