2012-06-14 69 views
11

我在我的數據庫中有2個表,例如:Table1: id (PK), data1Table2: id (PK), id_table1 (FK), data2。我怎麼能作出這樣的查詢:使用SQLiteDatabase從多個表SQLite查詢

SELECT * FROM Table1, Table2 WHERE Table1.id = Table2.id_table1 
GROUP BY Table1.data1 

我使用SQLiteDatabase及其query()方法。

Cursor mCursor = db.query(true, new String[] {"Table1","Table2"}, 
new String[] {"Table1.id","data1", "Table2.id", "id_table1", "data2"}, 
"Table1.id=Table2.id_table1", null, "Table1.data1", null,null,null); 

但有與第二ARG一個問題 - 它是唯一可以使用字符串,而不是字符串[](如new String[] {"Table1","Table2})。我該怎麼做才能以這種方式從多個表中進行查詢?

回答

25

試試這個:

Cursor mCursor = db.rawQuery("SELECT * FROM Table1, Table2 " + 
          "WHERE Table1.id = Table2.id_table1 " + 
          "GROUP BY Table1.data1", null); 
+0

@Graham如何通過id在 –

12

所以,當你需要JOIN表,你必須使用rawQuery,而不是query。 所以,你的發言

String SELECT_QUERY = SELECT * FROM Table1 t1 INNER JOIN Table2 t2 ON t1.id = t2.id GROUP BY t1.data1; 

我建議你使用JOIN,因爲它更多更快,更安全,然後你的方法。所以,那麼你的rawQuery方法是這樣的:

cursor = db.rawQuery(SELECT_QUERY, null); 

已經看清楚 rawQuery in SQLiteDatabase

問候