2

我正在制作一个清单应用程序作为学习练习。基础工作良好,现在我正在尝试添加一些花里胡哨。

当我按类别(在 中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);
}
4

1 回答 1

0
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
于 2013-03-26T18:13:54.140 回答