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

query di longitudine e latitudine MySQL per altre righe nel raggio di x miglia

Ecco la query che utilizzo sullo store locator con cui lavoro:

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 e :long sono i punti passati dall'utente dove lat e long sono i punti memorizzati nel database.

La :distanza è misurata in miglia, nella versione funzionante del codice la :distanza è effettivamente tirata da un menu a discesa che va da 10-50 miglia

È possibile modificare il codice in modo che funzioni con i chilometri modificando 3959 (la distanza dal centro della terra alla sua superficie in miglia) in 6371 (3959 miglia convertite in chilometri) grazie a joshhendo per quella soluzione.