获取 SimpleCursorAdapter 中外键的值

Get value of the Foreign Key in SimpleCursorAdapter

我有一个 listView,其中填充了来自我的数据库的数据。我使用 simpleCursorAdapter 来显示值。

我有一个 table 可以添加课程的地方:英语、法语...

在另一个 table 中,我可以创建已开发的课程(我添加开始和结束的日期、哪几天、课程的主题)。我必须作为 FK 提供课程。

当我添加课程时,我想在我的 listView 中显示每个示例:英语 - 阅读,但它显示 1 - 阅读。因为 1 是我存储在第二个 table.

中的值

如何将 1 更改为英语?

这是我的代码:

    Cursor cursor = dbhelper.getAllCours();
    String[] from = { "branche_cours", "designation" }; //here 'branche_cours' is the lesson i store as an INT, it's the FK so
    int[] to = { R.id.text_branche_cours, R.id.text_designation };
    adapter = new SimpleCursorAdapter(this, R.layout.list_row, cursor, from, to, 0);
    lvCours.setAdapter(adapter);
    adapter.notifyDataSetChanged();

我使用的方法getAllCours()

public Cursor getAllCours()
{

    //from here, i retrieve the ID, designation and branche_cours
    String Query = ("select ID as _id, date_debut, date_dernier, dixieme_point, " +
            "demi_point, description, designation, lundi, mardi, mercredi, jeudi," +
            " vendredi, samedi, branche_cours from " + TABLE_COURS);

    Open();

    Cursor cursor = db.rawQuery(Query, null);

    return cursor;
}

我怎样才能 link 那个 int 到真实值(那么 '1' 怎么变成 'English')?

一种解决方案是执行 SQL JOIN 操作以从两个表中获取数据:

所以 SQL 查询应该是这样的:

SELECT table1.branche_cours, table2.designation 
FROM table1
INNER JOIN table2 ON table1.ID=table2.ID; 

要在另一个 table 中查找值,您可以使用 correlated subquery:

SELECT ID AS _id,
       ...,
       samedi,
       (SELECT name
        FROM other_table
        WHERE other_table.id = cours.branche_cours
       ) AS branche_cours
FROM cours;