sql >> Database >  >> RDS >> Mysql

Hoe de dichtstbijzijnde locatie te vinden met behulp van de lengte- en breedtegraad uit de SQL-database?

Locaties in de buurt vinden met MySQL

Hier is de SQL-instructie die de dichtstbijzijnde 20 locaties zal vinden die zich binnen een straal van 25 mijl van de 37, -122 coördinaat bevinden. Het berekent de afstand op basis van de breedtegraad/lengtegraad van die rij en de beoogde breedtegraad/lengtegraad, en vraagt ​​dan alleen naar rijen waar de afstandswaarde kleiner is dan 25, rangschikt de hele zoekopdracht op afstand en beperkt deze tot 20 resultaten. Om te zoeken op kilometers in plaats van mijlen, vervangt u 3959 door 6371.

Tabelstructuur:

id,name,address,lat,lng

OPMERKING - Hier breedtegraad =37 &lengtegraad =-122. Dus je passeert gewoon je eigen.

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * 
cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * 
sin( radians( lat ) ) ) ) AS distance FROM your_table_name HAVING
distance < 25 ORDER BY distance LIMIT 0 , 20;

Details vind je hier .



  1. Hoe u consequent een Microsoft Access MVP Award kunt verdienen

  2. Inleiding tot Azure Serverless

  3. Rails-rapporten kunnen geen kolom vinden die er is

  4. Rails 3.2 Postgres Save Error ActiveRecord::StatementInvalid:PG::Error:ERROR:Syntaxisfout bij 'T' op positie 5