Мне нужно извлечь значения из базы данных на основе расстояния от любой заданной точки, а затем отсортировать их по возрастанию. Долгота и широта сохраняются в базе данных в виде поля с плавающей запятой. Вот мой запрос
SELECT
*,
@distance : = 6371 * 2 * asin(sqrt(POW(sin(({lat} - radians(address.latitude)) / 2), 2) + cos({lat}) * cos(radians(address.latitude)) * POW(sin(({lon} - radians(address.longitude)) / 2), 2)))
FROM
service,
provider,
address
WHERE
service.provider_id = provider.id
AND provider.address_id = address.id
AND provider.status = True
AND
(
6371 * 2 * asin(sqrt(POW(sin(({lat} - radians(address.latitude)) / 2), 2) + cos({lat}) * cos(radians(address.latitude)) * POW(sin(({lon} - radians(address.longitude)) / 2), 2)))
)
< 10
order by
@distance
Мне нужно повторно использовать расстояние для такого условия, как , где @distance <10 </strong>, но я не могу повторно использовать, он возвращает пустой список. тогда как @ distance в ORDER BY работает нормально. Как я могу повторно использовать переменную в предложении where?