2014-09-02 40 views
0

这里是我的sqlite表:选择每PARENT_ID只有最后插入的行

_ID | DATE_INSERTED | LATITUDE | LONGITUDE | TRACKER_ID | DATA 

我需要每TRACKER_ID,其中LATITUDELONGITUDE不等于“,以获得与最后插入的行一个Cursor(由DATE_INSERTED0“。

我做它在一个CursorLoader,这就是我能得到:

public static CursorLoader getLoaderForLastMessages(Context context) { 
    String sel = MessageTable.LONGITUDE + " !=? and " + MessageTable.LATITUDE + " !=?"; 
    String[] selArgs = {"0", "0"}; 
    return new CursorLoader(context, GpsProvider.MESSAGE_CONTENT_URI, null, sel, selArgs, null); 
} 

我不知道该怎么每TRACKER_ID只选择最后一排。我猜DISTINCTGROUP BY是好话,但我不知道如何正确使用它们。

原始SQLITE查询也是一个很好的答案,我会适应它我的代码。

编辑: 为了澄清,我需要这样的光标:

_ID | DATE_INSERTED | LATITUDE | LONGITUDE | TRACKER_ID | DATA 
3 | 23424123  | 13  | 43  |  1  | data 
6 | 23563344  | 25  | 56  |  2  | data 
19 | 56573473  | 37  | 12  |  3  | data 
43 | 23635743  | 82  | 99  |  4  | data 

回答

0

您可以查询表的最后插入的行ID:

//获取最后插入的唯一主ID(_id)你的桌子。

public int getPrimaryId() { 
    final String MY_QUERY = "SELECT MAX(_id) FROM " + DATABASE_TABLE0; 
    Cursor cur = mDb.rawQuery(MY_QUERY, null); 
    cur.moveToFirst(); 
    int ID = cur.getInt(0); 
    cur.close(); 
    return ID; 
} 

您可以使用此ID在查询中指定并在光标中加载结果。

+0

也请您告诉他如何不得到值,如果lattitude和经度不等于零 – Jamil 2014-09-02 13:53:49

+0

是怎么做的帮助获取最后一个记录PER TRACKER_ID? – 2014-09-02 13:58:50

+0

他可以包含一个WHERE子句,如果他想要经度和长度<> 0以及其他参数! – Skynet 2014-09-02 14:04:55

0

试试这个:

String selectQuery = "SELECT * FROM " + <TABLE_NAME> + " WHERE TRACKER_ID = \"" + <trackID> + "\" AND LATITUDE != '0' AND LONGITUDE != '0' AND DATE_INSERTED = \"" + <date>" ; 
Cursor cursor = sqliteDatabase.rawQuery(selectQuery, null); 

if(cursor.moveToLast()){ 

//Get the value here using cursor.getString(<column number>) 

} 
0

可能是一个选择查询,如:

SELECT A._ID , A.DATE_INSERTED , A.LATITUDE , A.LONGITUDE , A.TRACKER_ID , A.DATA 
FROM MY_TABLE A 
JOIN 
(
    SELECT TRACKER_ID, MAX(DATE_INSERTED) MAX_DATE_INSERTED FROM MY_TABLE 
    WHERE LATITUDE <> '0' AND LONGITUDE <> '0' 
) B 

ON A.TRACKER_ID = B.TRACKER_ID 
AND A.DATE_INSERTED = B.MAX_DATE_INSERTED 
+0

我会试试这个,谢谢。 – 2014-09-02 15:11:48