Расположение SQL из запроса известной точки - PullRequest
1 голос
/ 10 октября 2011

У меня есть база данных MySQL со следующей таблицей

int - id
float 2,6 - long
float 2,6 - lat
int - radius

Я хочу создать запрос SQL, который возвращает идентификатор и расстояние от заданного местоположения (long & lat)

Iнашел следующий фрагмент кода, который работает:

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) *
cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * 
sin( radians( lat ) ) ) ) AS distance FROM markers 
HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;

Я хочу изменить этот запрос, чтобы он возвращал только те строки, где вычисленная длина меньше радиуса (столбец в моей таблице), заменяя 25 на радиусне работаетЕсть ли способ добиться этого без использования двух SQL-запросов?

1 Ответ

1 голос
/ 10 октября 2011
Проблема

возникает из-за того, что результат distance находится в float , а радиус представляет собой тип данных integer , поэтому вам необходимо указывать радиус CAST как float. попробуйте ниже

SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) *
cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * 
sin( radians( lat ) ) ) ) AS distance FROM markers 
HAVING distance < CAST (radius AS float) ORDER BY distance LIMIT 0 , 20;

С ПОМОЩЬЮ:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...