Запрос Android SQLite

#android

#Android

Вопрос:

Я получил следующие 2 таблицы в базе данных моего приложения

Таблица 1:

 FTSProfile
-----------
suggest_intent_data_id
suggest_shortcut_id
CELL_ID
NAME
_id
  

Таблица 2:

 FTSCell
-----------
suggest_intent_data_id
KEY_LAC
suggest_shortcut_id
_id
KEY_MCC
KEY_CID
KEY_MCC
  

И я хочу выполнить левое объединение таблиц с помощью KEY_CID = KEY_CELL_ID. Все кажется прекрасным, пока я не захочу получить FTSCell._id и привести его как _ID в результирующей таблице. Я использовал SQLiteQueryBuilder для облегчения построения запроса:

 SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
    builder.setTables(FTS_VIRTUAL_TABLE_PROFILE " LEFT JOIN " FTS_VIRTUAL_TABLE_CELL " ON " FTS_VIRTUAL_TABLE_CELL "." DataCellQuery.KEY_CID "=" FTS_VIRTUAL_TABLE_PROFILE "." DataProfileQuery.KEY_CELL_ID);
    builder.setProjectionMap(mColumnMap_CombinedTable);
    Cursor cursor = builder.query(mDatabaseOpenHelper.getWritableDatabase(), columns, selection, selectionArgs, null, null, null);
    if (cursor == null) return null;
    else if (!cursor.moveToFirst()) {
        cursor.close();
        return null;
    }   
    return cursor;
  

и вот используется моя хэш-карта:

 private static HashMap<String, String> buildColumnMap_CombinedTable() {
        HashMap<String,String> map = new HashMap<String,String>();
      for (String key: DataCellQuery.KEYS) map.put(key, key);
      map.put(BaseColumns._ID, "rowid AS "   FTS_VIRTUAL_TABLE_CELL  "." BaseColumns._ID);
      map.put(SearchManager.SUGGEST_COLUMN_INTENT_DATA_ID, "rowid AS "   SearchManager.SUGGEST_COLUMN_INTENT_DATA_ID);
      map.put(SearchManager.SUGGEST_COLUMN_SHORTCUT_ID, "rowid AS "   SearchManager.SUGGEST_COLUMN_SHORTCUT_ID);
      return map;
        }
  

Запрос идеален, если я не получаю _id из таблицы ячеек, но мне это нужно в моем коде. Как я могу избавиться от этого??? Я получаю следующее сообщение об ошибке…

  05-19 15:56:05.054: ERROR/AndroidRuntime(7772): Caused by: android.database.sqlite.SQLiteException: near ".": syntax error: , while compiling: SELECT rowid AS FTSCell._id, KEY_MCC, KEY_MNC, KEY_CID, KEY_LAC FROM FTSProfile LEFT JOIN FTSCell ON FTSCell.KEY_CID=FTSProfile.CELL_ID WHERE (NAME="PX9RKTPYW4")
  

Ответ №1:

Синтаксис таков:

 select table.field as name, ...
  

нет name as table.field .

Комментарии:

1. хотя я использовал другой способ окончательно решить проблему, спасибо в любом случае

2. не могли бы вы, пожалуйста, поделиться тем, что вы сделали, чтобы решить вашу проблему? У меня такая же проблема