我有以下两个问题:
一个。
db.query(DBHelper.TABLE, new String[] {
DBHelper._ID, DBHelper._DATE_AND_TIME,
DBHelper._SOURCE, DBHelper._MODE,
"SUM(" + DBHelper._AMOUNT + ")" },
DBHelper._DATE_AND_TIME + " BETWEEN ? AND ?",
new String[] { date_min, date_max }, null, null, null, null);
和sum的结果会像这样
进入textview String.valueOf(cursor.getString(4)).
第二个查询B.
db.query(DBHelper.TABLE, new String[] {
DBHelper._ID, DBHelper._DATE_AND_TIME,
DBHelper._SOURCE, DBHelper._MODE,
DBHelper._AMOUNT }, DBHelper._DATE_AND_TIME
+ " BETWEEN ? AND ?", new String[] { date_min, date_max },
null, null, null, null);
结果转到
adapter = new SimpleCursorAdapter(this, R.layout.item, cursor, from,
to, FLAG_AUTO_REQUERY);
我想要的是结合两个查询。首次查询后关闭游标,并对适配器使用相同的查询(A)。到目前为止,我已将DBHelper._AMOUNT添加到SELECT查询中,但ListView仅显示最后一个条目结果(不是整个数据)。如何修改查询A以在TextView中显示SUM,然后对适配器使用相同的查询。
答案 0 :(得分:0)
在普通查询(如B)中,数据库返回与WHERE过滤器匹配的每个表记录的结果记录。
但是,当您使用像SUM()这样的聚合函数时,数据库会计算所有表记录中的单个值(如果您正在使用GROUP BY,则计算组中的所有记录)并将其作为单个结果返回记录。
因此,您的两个查询根本不同,不能合并为一个查询。
(请注意,查询A的前四个结果列没有任何有意义的值,因为结果记录不能保证与原始表中的任何特定记录相对应;您应该只询问SUM值。)