sql >> Database >  >> RDS >> Mysql

mySQL lengte- en breedtegraad opvragen voor andere rijen binnen een straal van x mijl

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.




  1. Verbinding met SQL Server werkt soms

  2. Bewaar procedures in phpMyAdmin

  3. Grote .patch_storage

  4. Selecteer / voeg een versie van een Upsert in:is er een ontwerppatroon voor hoge gelijktijdigheid?