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

MySQL - Намерете точки в радиус от базата данни

В момента работя по проект, в който изчислявам разстоянията между множество места. Използвам следната заявка за избор на object_id, които са в рамките на даден радиус.

SELECT id, 
( 6371 * 
    ACOS( 
        COS( RADIANS( db_latitude ) ) * 
        COS( RADIANS( $user_latitude ) ) * 
        COS( RADIANS( $user_longitude ) - 
        RADIANS( db_longitude ) ) + 
        SIN( RADIANS( db_latitude ) ) * 
        SIN( RADIANS( $user_latitude) ) 
    ) 
) 
AS distance FROM the_table HAVING distance <= $the_radius ORDER BY distance ASC"

Не мога да обясня самата формула на ACOS, защото я получих от изследвания.

db_latitude = database latitude field
db_longitude = database longitude field
$user_latitude = browser latitude coördinate
$user_longitude = browser longitude coördinate
$the_radius = the radius that you want to search in

Това е в километри.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да накарам категорията от първо ниво да се показва само веднъж?

  2. MySQL - Как да разделяте стойности в единични низове с помощта на запетая

  3. mysql- Как да приложим грантове към колона?

  4. Постоянство на PHP MySQL връзката

  5. 4 начина за изброяване на всички таблици в MySQL база данни