0

これは私のデータベースクラスのメソッドです:

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();

そして、アプリケーションは強制的に閉じます!

私が間違っているところはありますか?

アップデート

これはLogCatのスナップショットですが、理解できませんでした。出力をandroid.database次 のようにフィルタリングしました。ここに画像の説明を入力してください

私がやろうとしているのはtitle、すべてのテーブルから値TRUEのfav(タイプ:BOOL)を持つ(タイプ:TEXT)を取得し、それらを1つに表示することですListView(SimpleCursorAdapterを使用)。

4

1 に答える 1

1

何をしようとしているのかを正確に理解していないので、クエリを次のように変更する必要があると思います。

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」のすべての結果が取得され、すべてが1つの結果セットにまとめられます。重複したくない場合は、「UNIONALL」を「UNION」に変更できます。'SELECT rowid as _id、title'は、'title'フィールドを取得するテーブルを認識していないため、現在クエリは失敗しています。

于 2011-07-11T08:14:57.360 に答える