2012-06-14 10 views
11

का उपयोग कर एकाधिक तालिकाओं से SQLite क्वेरी मेरे डेटाबेस में 2 टेबल हैं, उदाहरण के लिए: Table1: id (PK), data1 और Table2: id (PK), id_table1 (FK), data2SQLiteDatabase

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

लेकिन वहाँ दूसरा आर्ग के साथ एक समस्या है - यह स्ट्रिंग का उपयोग करने के केवल संभव है, नहीं String [] (जैसे new String[] {"Table1","Table2})। इस तरह से कई तालिकाओं से क्वेरी बनाने के लिए मुझे क्या करना चाहिए?

उत्तर

25

इस प्रयास करें:

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

@Graham पर नज़र –

12

तो जब आप 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); 

कैसे इस में आईडी पारित करने के लिए rawQuery in SQLiteDatabase

सादर

संबंधित मुद्दे