13

データベースに2つのテーブルがあります。例:Table1: id (PK), data1Table2: id (PK), id_table1 (FK), data2。どうすればそのようなクエリを作成できますか?

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);

ただし、2番目の引数には問題があります。String[](のように)ではなく、Stringのみを使用できますnew String[] {"Table1","Table2}。そのように複数のテーブルからクエリを作成するにはどうすればよいですか?

4

2 に答える 2

29

これを試して:

Cursor mCursor = db.rawQuery("SELECT * FROM Table1, Table2 " +
                             "WHERE Table1.id = Table2.id_table1 " +
                             "GROUP BY Table1.data1", null);
于 2012-06-14T08:43:23.597 に答える
14

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);

SQLiteDatabase の rawQueryを見て ください

よろしく

于 2012-06-14T08:53:14.560 に答える