2016-09-12 21 views
0

私のデータベースには、カテゴリ、単語、およびWordImgという3つのテーブルがあります。私はListgetAllCategoriesを実装しようとしているし、問題は私がこれを行うために3つのテーブルすべてからデータを取得する必要があるということです。私は3つのテーブルに参加すると思いますか?これをどうやって達成するかは不明です。複数のテーブルを使用してデータを取得するSQLiteデータベース

各カテゴリには単語の名前と単語が含まれています。各単語にはイメージの名前が含まれています。テーブルを作成するために使用さ

書:あなたはこのような3つのテーブルに参加することができます

public void onCreate(SQLiteDatabase db) { 
    final String SQL_CREATE_CATEGORY_TABLE = "CREATE TABLE " + CATEGORIES_TABLE + " (" + 
      _ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + 
      TITLE + " TEXT NOT NULL " + ");"; 
    final String SQL_CREATE_WORDS_TABLE = "CREATE TABLE " + WORDS_TABLE + " (" + 
      _ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + 
      TITLE + " TEXT NOT NULL, " + 
      BELONGS_TO + " INTEGER NOT NULL, " + 
      "FOREIGN KEY (" + BELONGS_TO + ") REFERENCES " + CATEGORIES_TABLE + " (" + _ID + ")" + 
      ");"; 
    final String SQL_CREATE_WORDIMG_TABLE = "CREATE TABLE " + WORDIMGS_TABLE + " (" + _ID + " " + 
      "INTEGER PRIMARY KEY AUTOINCREMENT," + TITLE + " TEXT NOT NULL, " + 
      BELONGS_TO + " INTEGER NOT NULL, " + 
      "FOREIGN KEY (" + BELONGS_TO + ") REFERENCES " + WORDS_TABLE + " (" + _ID + ")" + 
      ");"; 



    db.execSQL(SQL_CREATE_CATEGORY_TABLE); 
    db.execSQL(SQL_CREATE_WORDS_TABLE); 
    db.execSQL(SQL_CREATE_WORDIMG_TABLE); 

} 

答えて

0

select * 
from CATEGORIES_TABLE c 
join WORDS_TABLE w on c.ID = w.BELONGS_TO 
join WORDIMGS_TABLE wi on w.ID = wi.BELONGS_TO 
+0

テーブルを結合するのが最善の方法でしょうか? – Edward

+0

はい、単純な結合ユースケースです –

0

をあなたは本当にread up on joins

:-)あなたが実際に変数を混合している必要がありますそこにはSQLがあるので、実際にあなたのカラム名とそれ以外のものが何であるかはわかりませんが、私はあなたにアイデアを与えるべき素早く汚い例を与えます。

のは、あなたがカテゴリ「foo」という単語のためのすべての画像のタイトルをしたいとしましょう:

select wordimgs_table.title 
from categories_table 
inner join words_table on words_table.belongs_to = categories_table._id 
inner join wordimgs_table on wordimgs_table.belongs_to = categories_table._id 
where categories_table.title = 'foo' 

これは、基本的には、順不同リストをお渡しします。あなたの句や友達によって独自の順序で追加します。そして明らかに実際のテーブルとカラム名などを代入してください。

関連する問題