sql >> Databasteknik >  >> RDS >> Mysql

MySQL - Hitta punkter inom radie från databasen

Jag arbetar just nu med ett projekt där jag beräknar avstånd mellan flera platser. Jag använder följande fråga för att välja objekt-id:n som ligger inom en given radie.

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"

Jag kan inte förklara själva ACOS-formeln eftersom jag fick den från forskning.

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

Detta är i kilometer.



  1. ColdFusion parametrerar en fråga

  2. LIKE vs CONTAINS på SQL Server

  3. Kan jag återställa en transaktion som jag redan har genomfört? (dataförlust)

  4. Varje härledd tabell måste ha sitt eget aliasfel