Справка по запросу SQLite для нескольких вариантов - PullRequest
2 голосов
/ 19 апреля 2011

У меня есть приложение для Android, которое использует базу данных SQLite, чтобы определить, достигнуты ли определенные «достижения». Мне нужен запрос, который вернет длину курсора 4, если в столбце содержится один из каждого «сезона».

Так что, если я выполню запрос к столбцу '_id', как показано ниже:

_id:

yada
Autumn
yada
Summer
Summertime
yada
yada
Winter
Spring

вернет курсор из 4 строк (таким образом, указав, что достижение «Все четыре сезона» будет достигнуто.

Возможно ли это даже с одним запросом, или мне придется выполнить несколько курсоров и код в приложении? Я хотел бы использовать LIKE, так как не все записи будут иметь одинаковый текст (т. Е. Summer или Summertime, но оба должны соответствовать).

1 Ответ

1 голос
/ 19 апреля 2011

Вы должны быть в состоянии достичь этого в предложении where запроса, с и, подобно, или с круглыми скобками. Что-то вроде ...

Cursor mC = mDb.query("season", null, "_id like '%summmer%' and "
    + "_id like '%winter%' and "
    + "_id like '%spring%' and "
    + "(_id like '%fall%' or _id like '%autumn%')",
    null, null, null, null);

После этого вы можете получить что-то вроде ...

String [] seasons = new String[] {"spring", "summer", "fall", "autumn", "winter");
boolean fallExists = false;
int seasonCount = 0;

for(int i = 0; i < 5; ++i){
   if(i == 3 && fallExists) continue;
   mC.moveToFirst();
   do{
      if(mC.getString(ID_COLUMN).toLowerCase().contains(seasons[i])){
          seasonCount++;
          if(i == 2) fallExists = true;
      }
   } while ((mC.moveToNext()));
}

if(seasonCount == 4){
   //have a party
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...