Sql: столбец ошибки формулы Haversine не существует

У меня странная проблема, связанная с моей формулой haversine. То, как это происходит в моем приложении;

select lat,long,distance from(
        select lat,long,( 6371 * acos( cos( radians("+testLatitude.to_s+") ) * cos( radians( lat ) ) * cos( radians( long ) - radians("+testLongitude.to_s+") ) + sin( radians("+testLatitude.to_s+") ) * sin( radians( lat ) ) ) ) as distance
        from available_people) as dt where distance < "+distance.to_s+" order by distance

Я на 100% уверен, что у меня есть personName в моей таблице available_people, но я не могу заставить работать приведенный ниже запрос. Это дает мне столбец не существует ошибки.

select lat,long,distance from(
            select personName,lat,long,( 6371 * acos( cos( radians("+testLatitude.to_s+") ) * 

    cos( radians( lat ) ) * cos( radians( long ) - radians("+testLongitude.to_s+") ) + sin( radians("+testLatitude.to_s+") ) * sin( radians( lat ) ) ) ) as distance
                from available_people) as dt where distance < "+distance.to_s+" order by distance

Что может быть возможной причиной. Смогу ли я получить столбец personName, а также последнюю длинную информацию?

1 ответ

Не видя точную ошибку (вы действительно должны включить ее), я бы сказал, что вы должны префикс personName с таблицей т.е. available_people.personName или же dt.personName (если я правильно читаю ваш запрос).

Во-вторых, хотя и не связаны, какой тип столбца вы используете для своих столбцов lat/lng? Это использует MySQL? Как плавает?

Если это так, то вы столкнетесь с серьезными проблемами производительности, когда ваша таблица будет содержать достаточно записей. Я столкнулся с этой проблемой с ~50 тыс. Записей, где запросы занимали 2 минуты или более.

Если вы работаете с геопространственными данными, рассмотрите возможность использования Postgres+PostGIS или MongoDB. Эти решения имеют геопространственную индексацию, чтобы сделать ваши запросы сверхбыстрыми, и функционируют так, что вам не придется самостоятельно создавать хаверсайн или сферический закон косинусов.

Другие вопросы по тегам