2012-06-14 18 views
11

Veritabanımda 2 tablo var, örneğin: Table1: id (PK), data1 ve Table2: id (PK), id_table1 (FK), data2. Ben SQLiteDatabase ve query() yöntemi kullanıyorumSQLiteDatabase kullanarak birden çok tablodan SQLite sorgusu

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

: Nasıl böyle bir sorgu yapabilirsiniz.

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

Fakat ikinci arg ile bir problem var - bu dize kullanmak mümkündür, değil String [] (gibi new String[] {"Table1","Table2}). Bu şekilde birden çok tablodan sorgu yapmak için ne yapmalıyım?

cevap

25

bu deneyin: JOIN Tablolar gerektiğinde

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

@Graham de göz –

12

Yani, rawQuery yerine query kullanmak zorunda. Eğer çünkü daha hızlı ve daha güvenli senin yaklaşımın ardından JOIN kullanmak Yani deyim

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

tavsiye. Öyleyse senin rawQuery yöntem kutu gibi görünür:

cursor = db.rawQuery(SELECT_QUERY, null); 

bu kimliği geçmesine nasıl rawQuery in SQLiteDatabase

Saygılar

İlgili konular