2012-06-14 12 views
11

Mam 2 tabele w mojej bazie danych, na przykład: Table1: id (PK), data1 i Table2: id (PK), id_table1 (FK), data2. Jak mogę złożyć zapytanie tak:Zapytanie SQLite z wielu tabel przy użyciu SQLiteDatabase

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

Używam SQLiteDatabase i jego metody 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); 

Ale jest problem z drugim arg - jest to możliwe tylko do korzystania z ciągiem, nie String [] (jak new String[] {"Table1","Table2}). Co powinienem zrobić, aby w ten sposób utworzyć zapytanie z wielu tabel?

Odpowiedz

25

Spróbuj tego:

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

@Graham jak przekazać id w ten –

12

Więc kiedy trzeba JOIN tabelach, trzeba użyć rawQuery zamiast query. Więc stwierdzenie

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

polecam użyć JOIN ponieważ szybsze i bezpieczniejsze następnie swoim podejściu. Więc wówczas rawQuery metoda może wyglądać następująco:

cursor = db.rawQuery(SELECT_QUERY, null); 

Mają przyjrzeć rawQuery in SQLiteDatabase

Pozdrawiam

Powiązane problemy