2012-06-14 51 views
11

Tengo 2 tablas en mi base de datos, por ejemplo: Table1: id (PK), data1 y Table2: id (PK), id_table1 (FK), data2. ¿Cómo puedo hacer una consulta así:Consulta de SQLite de tablas múltiples usando SQLiteDatabase

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

estoy usando SQLiteDatabase y su método 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); 

Pero hay un problema con la segunda arg - es sólo posible utilizar cuerdas, no String [] (como new String[] {"Table1","Table2}). ¿Qué debo hacer para hacer una consulta de varias tablas de esa manera?

Respuesta

25

Prueba esto:

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

@Graham cómo pasar id en este –

12

Así que cuando necesite JOIN tablas, se tienen que utilizar en lugar de rawQueryquery. Así su estado de

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

recomiendo que utilice JOIN porque más rápido y más seguro, entonces su enfoque. Así entonces su rawQuery método se parece a esto:

cursor = db.rawQuery(SELECT_QUERY, null); 

tienen mirada en rawQuery in SQLiteDatabase

Saludos

Cuestiones relacionadas