Greendao Distinct计数查询

时间:2015-11-21 19:01:18

标签: android greendao

所以我一直在努力让这个查询与GreenDao一起工作,而我的问题是查询的开始,它(使用rawquery)在where子句之后开始。

甚至可以使用GreenDao进行此查询,还是必须使用标准SQL查询访问数据库而不使用GreenDao?

echo $video->thumbnail->getNameSpaces(true);
echo $video->thumbnail->getNameSpaces(true)['url'];
echo $video->thumbnail->getNameSpaces(true)->url;

4 个答案:

答案 0 :(得分:1)

所以我只能使用SQL来做,不知道是否有任何BuildIn方法可以做同样的事情:

  String query = "SELECT COUNT (DISTINCT "
                                    + HomeItem2Dao.Properties.VisiblePageId.columnName+
                                    ") from "
                                    + HomeItem2Dao.TABLENAME
                                    + " where "
                                    + HomeItem2Dao.Properties.IsVisible.columnName + " = 1 and "
                                    + HomeItem2Dao.Properties.IsActive.columnName + " = 1";
                            Integer count = 0;

                            Cursor cursor =
                                    MainApplication.getInstance().getDaoSession().getDatabase().rawQuery(
                                            query, null
                                    );

                            if(cursor.moveToFirst()){
                                count = cursor.getInt(0);
                            }
                            cursor.close();

答案 1 :(得分:1)

您可以使用GreenDao的CountQuery类执行count(*)查询。在使用QueryBuilder时,请使用buildCount()方法而不是build()方法。下面的示例。

HomeItem2 homeItem2Dao = ((Application) context.getApplicationContext())
    .getDaoSession().getHomeItem2Dao();
QueryBuilder<HomeItem2> queryBuilder = 
    homeItem2Dao.queryBuilder().where(
        HomeItem2Dao.Properties.IsVisible.eq(true), 
        HomeItem2Dao.Properties.IsActive.eq(true));
return queryBuilder.buildCount().count();

答案 2 :(得分:1)

我用库创建了一个pull request,并添加了一个函数来构建具有不同列表达式的计数查询。

答案 3 :(得分:0)