Dit is de zoekopdracht die ik gebruik op de winkelzoeker waarmee ik werk:
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
en :long
zijn de punten die de gebruiker heeft doorgegeven waar lat
en long
zijn de punten die in de database zijn opgeslagen.
De :distance wordt gemeten in mijlen, in de werkende versie van de code wordt de :distance eigenlijk getrokken uit een vervolgkeuzelijst variërend van 10-50 mijl
De code wijzigen om met kilometers te werken, kan worden bereikt door 3959 (de afstand van het middelpunt van de aarde tot het oppervlak in mijlen) te wijzigen in 6371 (3959 mijl omgerekend naar kilometers), dankzij joshhendo voor die oplossing.