2012-06-14 11 views
11

Ich habe 2 Tabellen in meiner Datenbank, zum Beispiel: Table1: id (PK), data1 und Table2: id (PK), id_table1 (FK), data2. Wie kann ich eine Abfrage wie folgt aus:SQLite Abfrage von mehreren Tabellen mit SQLiteDatabase

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

Ich SQLiteDatabase und seine query() Methode.

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

Aber es gibt ein Problem mit der zweiten arg - es nur möglich ist, String zu verwenden, nicht String [] (wie new String[] {"Table1","Table2}). Was muss ich tun, um auf diese Weise eine Abfrage aus mehreren Tabellen zu erstellen?

Antwort

25

Versuchen Sie folgendes:

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

@Graham wie id in diese passieren –

12

Also, wenn Sie zu JOIN Tabellen benötigen, haben Sie rawQuery statt query zu verwenden. So Ihre Aussage

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

Ich empfehle Ihnen JOIN, weil es schneller und sicherer dann Ansatz. Also dann rawQuery Methode kann wie folgt aussieht:

cursor = db.rawQuery(SELECT_QUERY, null); 

Blick auf rawQuery in SQLiteDatabase

Grüße

Verwandte Themen