Странная проблема с курсором - Android - PullRequest
0 голосов
/ 11 июля 2011

Это метод в моем классе баз данных:

public Cursor fetchFavTitles() {
    return myDataBase.rawQuery("SELECT rowid as _id, title
        FROM table1 JOIN table2 JOIN table3 JOIN table4 JOIN table5 JOIN table6
        WHERE fav = TRUE", null);
}

В моей базе данных SQLite 6 таблиц:

  1. table1 => rowid, title, content, fav
  2. table2 => rowid, title, content, fav
  3. table3 => rowid, title, content, fav
  4. table4 => rowid, title, content, fav
  5. table5 => rowid, title, content, fav
  6. table6 => rowid, title, fav

В своей деятельности я написал это:

Cursor cursor = myDbHelper.fetchFavTitles();

и приложение заставляет закрыть!

Есть идеи, где я ошибаюсь?

UPDATE

Это снимок LogCat, я не мог его понять, я отфильтровал вывод с помощью android.database: enter image description here

Я пытаюсь получить title (тип: TEXT), который имеет fav (тип: BOOL) со значением TRUE из всех таблиц и отображает их в одном ListView (используя SimpleCursorAdapter).

1 Ответ

1 голос
/ 11 июля 2011

Не зная точно, что вы собираетесь, я предполагаю, что вам нужно изменить свой запрос на:

SELECT rowid as _id, title
        FROM table1 
        WHERE fav = TRUE
UNION ALL
SELECT rowid as _id, title
        FROM table2
        WHERE fav = TRUE
UNION ALL
SELECT rowid as _id, title
        FROM table3
        WHERE fav = TRUE
UNION ALL   
SELECT rowid as _id, title
        FROM table4 
        WHERE fav = TRUE
UNION ALL       
SELECT rowid as _id, title
        FROM table5 
        WHERE fav = TRUE
UNION ALL       
SELECT rowid as _id, title
        FROM table6 
        WHERE fav = TRUE

Это будет принимать все результаты, где «fav = TRUE» от каждого изтаблицы и положить их все в один набор результатов.Если вам не нужны дубликаты, вы можете изменить «UNION ALL» на «UNION».В данный момент ваш запрос не выполняется, потому что «SELECT rowid as _id, title» не знает, из какой таблицы вы хотите извлечь поле «title».

...