Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

consulta de longitude e latitude do mySQL para outras linhas dentro do raio de x milhas


Aqui está a consulta que uso no localizador de lojas com o qual trabalho:
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 são os pontos passados ​​pelo usuário onde lat e long são os pontos armazenados no banco de dados.

O :distance é medido em milhas, na versão de trabalho do código o :distance é realmente puxado de uma lista suspensa que varia de 10 a 50 milhas

Alterar o código para trabalhar com quilômetros pode ser feito alterando 3959 (a distância do centro da Terra à sua superfície em milhas) para 6371 (3959 milhas convertidas em quilômetros) graças ao joshhendo por essa solução.