我有一些棘手的问题。我的应用程序将用户数据输入到SQLite数据库中,并且我设法编写查询来恢复数据。获取数据库查询中出现不同条目的次数(Android)
这包括一个获取不同值的列表的查询,一个例子可能如下。假设你有以下数据:
Column a | Column b | Column c
a a a
a b b
a b b
b b b
“按组”功能使用,查询将创建以下列表:
aaa
abb
bbb
那么,我想,但没有做的是扩大这一并获得出现各个不同项目的次数的计数 - 因此,在上述情况下,它应该是这样的:
1 x aaa
2 x abb
1 x bbb
那么,有没有一种方式,一旦你查询的数据库,以获得的计数居住地o f各自不同的入口,从光标 - 或者我需要写一个单独的查询来获取这些信息..
这里是我的查询,因为它看起来的时刻:
public Cursor fetchDamagedComponentSpecForInspection(long inspectionId, String componentType) {
Cursor mCursor = rmDb.query(true, DAMAGED_COMPONENTS_TABLE, new String[] {
DAMAGED_COMPONENT_ID,
LOCATION_LINK,
RUN_LINK,
AREA_LINK,
INSPECTION_LINK,
LOCATION_REF,
RACKING_SYSTEM,
COMPONENT,
COMPONENT_TYPE,
QUANTITY,
POSITION,
RISK,
ACTION_REQUIRED,
NOTES_GENERAL,
MANUFACTURER,
TEXT1,
TEXT2,
TEXT3,
TEXT4,
NOTES_SPEC,
SPEC_SAVED},
INSPECTION_LINK + " = " + inspectionId + " AND " + COMPONENT_TYPE + " = ? AND " + SPEC_SAVED + " = ? ",
new String[] {componentType, "Yes"},
MANUFACTURER + ", " + TEXT1 + ", " + TEXT2 + ", " + TEXT3 + ", " + TEXT4 + ", " + NOTES_SPEC,
null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
有关其他信息,这里是我的主要活动的代码,我调用查询和检索数据:
final Cursor componentsAndSpecCursor = (Cursor) rmDbHelper.fetchComponentsAndSpecForManufacturer(inspectionId, rackingSystem, manufacturer);
if(componentsAndSpecCursor.moveToFirst()){
do {
componentType = componentsAndSpecCursor.getString(componentsAndSpecCursor.getColumnIndex(RMDbAdapter.COMPONENT_TYPE));
specText1 = componentsAndSpecCursor.getString(componentsAndSpecCursor.getColumnIndex(RMDbAdapter.TEXT1));
specText2 = componentsAndSpecCursor.getString(componentsAndSpecCursor.getColumnIndex(RMDbAdapter.TEXT2));
specText3 = componentsAndSpecCursor.getString(componentsAndSpecCursor.getColumnIndex(RMDbAdapter.TEXT3));
specText4 = componentsAndSpecCursor.getString(componentsAndSpecCursor.getColumnIndex(RMDbAdapter.TEXT4));
specNotes = componentsAndSpecCursor.getString(componentsAndSpecCursor.getColumnIndex(RMDbAdapter.NOTES_SPEC));
message.append(componentType).append(" ").append(specText1).append(" ").append(specText2).append(" ").append(specText3).append(" ").append(specText4).append(" ").append(specNotes).append("\r\n");
}
while (componentsAndSpecCursor.moveToNext());
}
componentsAndSpecCursor.close();
所以我也是不知道我将如何得到计数一次我已经包含在我的查询该位的代码(我仍然看不到它是如何完成的!)。
+0
你能提供一个你用于'group by'的代码的例子吗? –
+0
您好Gordon,它在上面的查询中 - 请参阅以下行:“MANUFACTURER +”,“+ TEXT1 +”,“+ TEXT2 +”,“+ TEXT3 +”,“+ TEXT4 +”,“+ NOTES_SPEC, - 这是由变量组成的组(如果您不想分组,则可以将其保留为空)。 –