2012-06-14 11 views
11

データベースに2つのテーブルがあります(例:Table1: id (PK), data1およびTable2: 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); 

しかし、第二引数に問題がある - それは文字列を使用するだけで可能です、ないString []型(new String[] {"Table1","Table2}など)。そのように複数のテーブルからクエリを作成するにはどうすればよいですか?

答えて

25

これを試してください:あなたはJOINテーブルに必要がある場合

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

この中でIDを渡す方法@Grahamを見てください –

12

だから、あなたは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

よろしく

関連する問題