Итак, у меня есть база данных кемпингов со столбцом названия, широты и долготы. Я пытаюсь выполнить запрос, используя объект курсора, но не могу заставить его работать.
У меня есть:
Campsite getClosestCampsite() {
SQLiteDatabase db = this.getReadableDatabase();
String query = "SELECT COL_NAME, COL_LATITUDE, COL_LONGITUDE, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM TABLE_CAMPSITES HAVING distance < 25 ORDER BY distance LIMIT 0 , 1;";
Cursor cursor = db.rawQuery(query, null);
Campsite campsite = new Campsite();
campsite.setName(cursor.getString(1));
campsite.setLatitude(cursor.getDouble(6));
campsite.setLongitude(cursor.getDouble(7));
cursor.close();
return campsite;
}
Итак, я просто пытаюсь вернуть 1 место для лагеря,AKA ближайший лагерь, чтобы я мог передать имя и координаты в функцию Google Maps. Правильно ли я набираю запрос для получения ближайшего местоположения на основе широты и долготы?
Среда IDE подчеркивает HAVING и дает мне,, AS GROUP или ожидаемую точку с запятой
Структура таблицы:
@Override
public void onCreate(SQLiteDatabase db) {
// CREATE TABLE
String CREATE_CAMPSITES_TABLE = "CREATE TABLE " + TABLE_CAMPSITES + "("
+ COL_ID + " INTEGER PRIMARY KEY," + COL_NAME + " TEXT,"
+ COL_CITY + " TEXT," + COL_FEATURE + " TEXT," + COL_FAVORITE + " TEXT," + COL_RATING + " INTEGER," + COL_LATITUDE + " REAL," + COL_LONGITUDE + " REAL" + ")";
db.execSQL(CREATE_CAMPSITES_TABLE);