簡體   English   中英

使用多個表獲取數據SQLitedatabase

[英]Using multiple tables to get data SQLitedatabase

我的數據庫中有三個表:Category,Words和WordImgs。 我正在嘗試實現ListgetAllCategories,問題是我需要從所有三個表中檢索數據才能做到這一點。 我想加入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);

}

您可以像這樣加入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

您應該真正閱讀聯接 :-)

您實際上是將變量與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'

基本上,這將為您提供無序列表。 按條款和朋友添加您自己的訂單。 並且顯然替換了實際的表和列名等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM