我的数据库中有三个表:Category,Words和WordImgs。我试图实现ListgetAllCategories,问题是我需要从所有三个表中检索数据才能执行此操作。我想加入3桌吗?不太清楚如何做到这一点。
每个类别都包含一个名称和单词的词典。每个单词都包含一个名称和图像的arraylist。
用于创建表的语句:
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 :(得分:0)
你可以像这样加入3个表:
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
答案 1 :(得分: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'
这基本上会给你一个无序列表。按条款和朋友添加您自己的订单。显然可以替换实际的表和列名等等。