我正在将清单应用程序作为学习练习。基础知识运行良好,现在我正尝试添加一些技巧。
当我按类别对列表进行排序(在expandablelistview
中)时,如果检查了类别的所有内容,则应检查类别组视图。
我保留用于在包含特定列表项的表中是否检查单个列表项的标志。我使用简单的1/0标志来表示已选中或未选中。我实现我的功能的想法是在查询中使用类似以下内容的代码,以查明是否检查了所有项目:
CASE WHEN sum(list_items.checked) = count(list_items.checked) THEN 1 ELSE 0 END AS 'groupchecked'
认为如果全部选中(1),则它们的总和应等于它们的总数...但是,当我将代码插入查询时,每个类别中不包含一项以上的任何内容都不会显示向上。我敢肯定,这个问题是由于我对SQLite的缺乏了解而引起的,但是我似乎无法找出适当的方法来完成这项工作。
我当前尝试使用选中的标志获取组光标的尝试:
public Cursor fetchGroup(String group, long list) {
String query = "SELECT DISTINCT "
+ group
+ " AS _id, CASE WHEN sum(list_items.checked) = count(list_items.checked) THEN 1 ELSE 0 END AS groupchecked FROM "
+ LISTITEM_TABLE
+ " JOIN "
+ ITEM_TABLE
+ " ON list_items.item_id=items._id WHERE list_items.list_id = "
+ list;
return mDb.rawQuery(query, null);
}
最佳答案
create table FOO(grp text, subgroup text, checked int)
insert into FOO(grp, subgroup, checked)
select 'feline','lion',1
union
select 'feline','tiger',0
union
select 'canine','dog',1
union
select 'canine','wolf',1
select grp, sum(checked) as checkedSum, count(checked) as checkedCount
from foo
group by grp
现在进行内联视图:
select X.grp
from
(
select grp, sum(checked) as checkedSum, count(checked) as checkedCount
from foo
group by grp
) X
where checkedSum=checkedCount
关于android - SQLite的情况,总和和COUNT,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15642911/