Я пытаюсь вернуть только строки, где широта и долгота, передаваемые в запрос по сравнению с широтой и долготой, хранящейся в базе данных, находятся на расстоянии нескольких миль друг от друга.Виртуальная колонка неизвестна при сравнении lat lng
Запрос выглядит следующим образом:
SELECT
c.google_theatre_id
AS cinema_id,
c.name
AS cinema_name,
(3959 * acos(cos(radians('50.4521013')) *
cos(radians(latitude)) *
cos(radians(longitude) -
radians('-3.5247389')) +
sin(radians('50.4521013')) *
sin(radians(latitude))))
AS distance
FROM
google_cinemas c, app_users u
WHERE
distance < u.range
AND
u.id = 126
ORDER BY
distance
Запрос предназначен для получения расстояния, а затем сравнить его на колонку (range
) в app_users
таблице.
При выполнении запроса, я получаю сообщение об ошибке distance
, являющееся неизвестным столбцом.
Как это виртуальная колонка, есть ли другой способ сравнения?
Спасибо :)
Попробуйте использовать 'HAVING'. MySQL не позволяет ссылаться на столбцы псевдонимов в 'WHERE' –