5

I have 3 tables in my sqllite database Two are config tables and one is main table where my data is stored. now how to retrive data from main table by joining 2 tables in android, How and where to perform join operations.

Can anyone guide me.

4

3 回答 3

9

你可以只执行一个 rawQuery。
例如这样的:

db.rawQuery("SELECT a.* 
FROM table_1 a 
INNER JOIN table_2 b ON a.id=b.anyId 
INNER JOIN table_3 c ON b.id= c.anyId
WHERE c.key = ?", new String[]{"test"});

第一个参数是您要执行的查询。对于要添加到查询中的所有键,只需?在查询中添加一个。
第二个参数是一个字符串数组。在这个数组中,你把你的键,就像上面给出的例子 value test

编辑:

也可以将 rawQuery 用于update,insertdelete.
例如一个简单的更新查询:

db.rawQuery("UPDATE table_1
SET fieldA = ?,
fieldB = ?
WHERE id = ?", new String[]{"test", "test2", "1"});
于 2013-04-18T06:17:45.563 回答
0

类 DatabaseHelper 扩展 SQLiteOpenHelper

在你的函数中写下下面的代码......

    SQLiteDatabase db = this.getReadableDatabase();

    private final String MY_QUERY = "YOUR QUERY";

    db.rawQuery(MY_QUERY, new String[]{"Parameter"});
    db.close();
于 2013-04-18T06:40:53.893 回答
-1

你需要rawQuery方法来解决这个问题。

private final String MY_QUERY = "SELECT * FROM table_a a INNER JOIN table_b b ON a.id=b.other_id WHERE b.property_id=?";

db.rawQuery(MY_QUERY, new String[]{String.valueOf(propertyId)});

但是如果你想做一个好的实现,为每个表创建一个 SQLiteHelper 和 DataSource 并在数据源中做关系。

于 2013-04-18T06:22:02.587 回答