1
我有以下情況:Android的SQLite的查詢兩個表到一個ArrayList
表1 --1:
兩個表的Android SQLite數據庫N - 表2
表1
- int id (PK)
- text field2
- text field3
- text field N…
ta ble2
- INT ID(PK)
- INT t1_id(FK)
- 真正場3
- 真正場N ...
接下來,我有以下的Android的Java結構:
Class Table1 {
int id;
String field2;
String field3;
String fieldN…;
ArrayList<Table2> atable2;
}
Class Table2 {
int id;
int t1_id;
double field3;
double fieldN…;
}
public ArrayList<Table1> atable1 = new ArrayList<Table1>();
所以,我需要從數據庫中選擇數據到atable1數組根據如下所示的條件列表:
select * from table1 where table1.field2 = ‘Italy’;
的問題是,數組列表atable1內的數組列表atable2必須基於來自表2的字段t1_id被選擇(table2.t1_id = table1.id)。
因此,任何人都可以幫助我構建一個有效的查詢形式(用於Android的sqlite)來獲取這些數據,包括來自table2的數據?
提前致謝!
此致
PS
你會用什麼查詢?爲什麼你沒有足夠的效率? –
首先,我得到了所有區域: openDatabase(); Cursor cur = myDataBase.rawQuery(「SELECT * FROM table1」+ 「WHERE table1.field2 LIKE'Italy'」,null); 和所有記錄拷貝到ArrayList atable1 接着,使一個用於循環進去atable1的atable2數組列表: 的openDatabase() 對(INT I = 0;我atable1.size()<;我+ + ){ Cursor cur = myDataBase.rawQuery(「SELECT * FROM table2」+ 「WHERE table2.table1_id ='」+ atable1.get(i).id +「'」,null); 接下來我將所有記錄從光標複製到atable1.get(i).atable2。 } – user3565080
對於第一個查詢是正常的結果,5000到15000條記錄。對於第二個查詢是正常的,每個atable1條目大約有20到50條記錄。 使用這種方法,第二個查詢非常慢(幾分鐘)。 有沒有可能只提取一個查詢到數據庫的所有信息? 非常感謝! PS – user3565080