按2个字段排序数据库

时间:2012-08-13 22:49:27

标签: android android-sqlite

我需要通过项目名称和项目日期按照排序顺序查询数据库。

例如,首先我想按字母顺序获取所有项目的名称,这没有问题但是可以有多个具有相同名称的项目,所以我还想按照我将它们插入数据库的日期对它们进行排序像这样

1/1/12, 1/2/12, 1/3/12, B 1/1/12, B 1/2/12, B 1/3/12, 等....

我该怎么做?

我所做的所有排序都只有一个这样的字段

CalendarEvents.EVENT_START + " COLLATE LOCALIZED ASC"

这是我想要排序的数据库

db.execSQL("CREATE TABLE " + EMGNOTE_TABLE + "(" + EMG_ID + " integer primary key autoincrement, " +
                EMG_NOTE_ID + " INTEGER, " + EMG_CDID + " INTEGER, " + EMG_CENTER_POINT + " TEXT, " + EMG_COMPANY_NAME +
                " TEXT, " + EMG_NAME + " TEXT, " + EMG_DESC + " TEXT, " + EMG_START_DATE + " TEXT, " + EMG_TTL + " TEXT, "
                + EMG_CENTER_LAT + " TEXT, " + EMG_CENTER_LON + " TEXT, " + EMG_LOCATION_TYPE + " TEXT, " + EMG_UPDATED + " TEXT, " + EMG_READ + " INTEGER);");

字段EMG_START_DATE将是我想要排序的日期

排序现在看起来像这样

CursorLoader(getActivity(),CalendarEvents.EVENTS_URI,
new String[] {CalendarEvents.EVENT_ID,CalendarEvents.EVENT_READ,CalendarEvents.EVENT_SUBJECT,
CalendarEvents.EVENT_COMPANY_NAME,CalendarEvents.EVENT_START}
,null
,null
,CalendarEvents.EVENT_COMPANY_NAME+" COLLATE LOCALIZED ASC, julianday("+CalendarEvents.EVENT_START + ")" + "COLLATE LOCALIZED DESC");

1 个答案:

答案 0 :(得分:0)

您尚未展示自己的数据库架构,因此我假设您有ITEM_NAME列和ITEM_DATE列以ISO8601格式存储为TEXT。 在这种情况下,您只需在查询中使用此orderBy

"ITEM_NAME ASC, julianday(ITEM_DATE)"  

更新

根据架构,它应该是(我猜):

"INCIDENT_STATON_NAME ASC, juliandate(INCIDENT_TOC)"