我知道如何创建一个查询来查找唯一的值,但我想要统计每个不同值的数量。如何获得每个不同值的计数(SQLite查询-Android)
所以我的代码的例子,在我的数据库帮手,它只是给了我不同的值的列表:
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;
}
因此,这将返回一个列表是这样的:
Dexion, M Duty, 3000mm, Blue
Hi-lo, Rackplan, 4000mm, Blue
PSS, P85 1.6, 4500mm, Blue
但我想知道每个值有多少(即有多少'Dexion,M Duty,3000mm,Blue'条目,因此输出看起来有点像这样:
2 x Dexion, M Duty, 3000mm, Blue
5 x Hi-lo, Rackplan, 4000mm, Blue
1 x PSS, P85 1.6, 4500mm, Blue
CommonsWare已经提出了一个帖子里面提供了以下解决方案:
select type, count(type) from table group by type;
不过,我不能确定如何将这种融入我现有的与我使用的查询类型代码。
编辑 - 下面是我尝试这个计数功能没有成功整合:
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 +
", Count (*) AS count",
null, null, null);
if (mCursor != null) {
mCursor.moveToFirst();
}
return mCursor;
}
也不能明白,我怎么居然在我的主要代码检索此(下面是我如何才能走出位在瞬间):
manufacturer = RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex(RMDbAdapter.MANUFACTURER)),"");
text_1 = RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex(RMDbAdapter.TEXT1)),"");
text_2 = RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex(RMDbAdapter.TEXT2)),"");
text_3 = RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex(RMDbAdapter.TEXT3)),"");
text_4 = RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex(RMDbAdapter.TEXT4)),"");
spec_notes = RMUtilities.notEmpty(cursor.getString(cursor.getColumnIndex(RMDbAdapter.NOTES_SPEC)),"");
但是如何获取计数值呢?
在此先感谢。
http://stackoverflow.com/questions/5522607/how-can-i-do-a-count-distinct-in-sqlite – CommonsWare
感谢CommonsWare,我看过该帖子。我只是有点困惑,我怎么跟我写的查询方式(即它是一个很大的查询,我在哪里放置数(独特),我如何获取这些信息?) – Scamparelli