Mysql
 sql >> база данни >  >> RDS >> Mysql

SQL заявката за геолокация не намира точно местоположение

В първата си заявка вярвам, че сте обърнали дължините в изваждането. Сферичният закон на косинусите е:

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

Ако lat1 е заменен с tblcity.latitude, long1 трябва да бъде заменен с tblcity.longitude. Мисля, че случайно сте заменили long2 в заявката си. Този работи ли по-добре?

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 

Все още не съм разгледал втората ви заявка, но се надявам, че това помогне.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Регистърът на буквите е чувствителен към оператора where в laravel

  2. Преобразувайте SQL резултатите в PHP масив

  3. Съхранявайте HTML в MySQL база данни

  4. Множество докер контейнери за mysql или един екземпляр с множество бази данни

  5. mysql_num_rows():предоставеният аргумент не е валиден ресурс за MySQL резултат