sql >> Database teknologi >  >> RDS >> Mysql

PHP / MySQL - Find alle varer i 500 meters radius fra faktiske gps-koordinater

At beregne afstanden mellem to koordinater er faktisk ikke så svært givet haversinformlen.

SELECT 
  -- stuff here
  , ( 6371000 * acos( cos( radians(45.815005) ) * cos( radians( stuff.lat ) ) * cos( radians( stuff.lng ) - radians(15.978501) ) + sin( radians(45.815005) ) * sin(radians(stuff.lat)) ) ) AS distance 
FROM 
  stuff
HAVING 
  distance < 500

Refereret svar

Nødvendige ændringer fra det oprindelige svar:

  1. Den konstant, der blev tilbudt i det originale svar, gav værdierne for miles eller kilometer. Jeg har ændret konstanten her til at arbejde med målere.

  2. Konstanterne er ændret for at bruge dine koordinater. Du vil måske tilpasse forespørgslen lidt længere for at lave disse parametre i stedet for konstanter.

  3. Den having udtryk ændret sig lidt for at afspejle dit ønske om 500 meter. Igen, dette kan være noget, du vil parametrere.




  1. postgresql databaseejer kan ikke få adgang til databasen - Ingen relationer fundet.

  2. Påvirker antallet af kolonner MYSQL-hastigheden?

  3. Kan vi bruge EF-migreringer med MySql

  4. Tæller rækker for alle tabeller på én gang