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 に答える