2013-03-27 68 views
0

你好我有一个这样的表在我的sqlite3数据库。android:过滤列数据

db.execSQL(" CREATE TABLE IF NOT EXISTS " 
     + DATABASE_TABLE + " (" + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + KEY_DATE + " TEXT, " + KEY_CATEGORY + " TEXT, " 
     + KEY_SUB_CATEGORY + " TEXT, " + KEY_AMOUNT + " REAL, " 
     + KEY_NOTE + " TEXT " + ");"); 

我查询的数据库,并得到了所有值KEY_SUB_CATEGORYKEY_AMOUNT本年度。

Cursor c = db.query(DATABASE_TABLE,new String[] { KEY_SUB_CATEGORY, KEY_AMOUNT }, + KEY_YEAR + "=? ", new String[] { Integer.toString(currentYear) }, null, null, null, null); 

现在,是有办法,我可以在我的KEY_SUB_CATEGORY还基于值过滤。

例如,我的KEY_SUB_CATEGORY对杂货店有3个值。

有没有一种方法可以从此光标获得杂货店的总金额?或者我必须每次单独询问每个KEY_SUB_CATEGORY

enter image description here

回答

0

有没有一种方法,我可以从这个 光标得到杂货店总量值?或者每次都必须分别查询每个KEY_SUB_CATEGORY ?

我推荐给你做新的查询(代码更具可读性),然后使用SUM()函数作诡计。

int sum = 0; 
String query = "select SUM(" + KEY_AMOUNT + ") from " + DATABASE_TABLE 
      + " where " + KEY_SUB_CATEGORY + " = ?"; 
Cursor c = db.rawQuery(query, new String[] {"Grocery"}); 
if (c.moveToFirst()) { 
    sum = c.getInt(0); 
} 

输出将是:

select SUM(KEY_AMOUNT) from DATABASE_TABLE where KEY_SUB_CATEGORY = 'Grocery'; 
+0

但我想知道我是否可以查询数据库只有一次,并获得KEY_SUB_CATEGORY所有的值,然后杂货,燃油等筛选值和他们的光标总量? – Sammys 2013-03-27 19:10:13

+0

@kavya我喜欢分开的查询。它对你更具可读性。 – Sajmon 2013-03-27 19:12:24

+0

- 感谢您的回复。 – Sammys 2013-03-27 19:17:09

0
Cursor c = db.query(DATABASE_TABLE, 
new String[] { KEY_SUB_CATEGORY, KEY_AMOUNT, "sum(" + KEY_AMOUNT + ") as catsum " }, 
+ KEY_YEAR + "=? ", new String[] { Integer.toString(currentYear) }, 
KEY_SUB_CATEGORY, null, null, null); 

c.getInteger(2) would be the sum