Her er den forespørgsel, jeg bruger på den butiksfinder, jeg arbejder med:
SELECT
`id`,
(
6371 *
acos(
cos( radians( :lat ) ) *
cos( radians( `lat` ) ) *
cos(
radians( `long` ) - radians( :long )
) +
sin(radians(:lat)) *
sin(radians(`lat`))
)
) `distance`
FROM
`location`
HAVING
`distance` < :distance
ORDER BY
`distance`
LIMIT
25
:lat
og :long
er de punkter, som brugeren har bestået, hvor lat
og long
er de punkter, der er gemt i databasen.
:distancen måles i miles, i den fungerende version af koden trækkes :distancen faktisk fra en drop-down, der spænder fra 10-50 miles
Ændring af koden til at fungere med kilometer kan opnås ved at ændre 3959 (afstanden fra jordens centrum til dens overflade i miles) til 6371 (3959 miles konverteret til kilometer) takket være joshhendo for den løsning.