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

MySQL calculando distância (solução simples)


Você não pode fazer referência a um alias na cláusula select de outra parte da instrução sql. Você precisa colocar toda a expressão em sua cláusula where:
WHERE
    ROUND( SQRT( POW( ( (69.1/1.61) * ('52.64' - latitude)), 2)
        + POW(( (53/1.61) * ('6.88' - longitude)), 2)), 1) < 10

Uma solução mais limpa seria usar uma subconsulta para gerar os dados calculados:
  SELECT *, distance
    FROM (
       SELECT *,
           ROUND( SQRT( POW( ( (69.1/1.61) * ('52.64' - latitude)), 2)
               + POW(( (53/1.61) * ('6.88' - longitude)), 2)), 1) AS distance
           FROM lp_relations_addresses
       ) d
   WHERE d.distance < 10
ORDER BY d.distance DESC

Demonstração:http://www.sqlize.com/q96p2mCwnJ