【问题标题】:calculate SUM for single column with DbFlow使用 DbFlow 计算单列的 SUM
【发布时间】:2018-01-07 23:17:06
【问题描述】:

我正在使用最新版本的DBFLOW 库,我正在尝试将单列总和计算为countOfNewPosts

这是我的桌子:

public class CafeWebNewPostInformation extends BaseModel {
    @PrimaryKey
    @Column
    public int id;

    @Column
    public int cafeWebServerId;

    @Column
    public int countOfNewPosts;

    @Column
    @ForeignKey(tableClass = AlachiqCafeWebs.class,
            references = @ForeignKeyReference(columnName = "parentId", foreignKeyColumnName = "id"))
    private int parentId;

    @Column
    public int lastSavedId;

    @Column
    public int lastRequestedId;

    @Column
    public int lastRetrievedId;
}

这是我从这个表中获取的代码:

CafeWebNewPostInformation countOfNewPost =
        SQLite.select(
                Method.sum(CafeWebNewPostInformation_Table.countOfNewPosts).as("count")
        )
                .from(CafeWebNewPostInformation.class).querySingle();

我没有收到任何错误,这是结果:

截图:

会发生什么?count 在此结果中的位置在哪里?

【问题讨论】:

    标签: android database dbflow


    【解决方案1】:

    问题解决了

    考虑一下。你在打电话

    SELECT SUM(`countOfNewPosts`) as 'count' FROM `CafeWebNewPostInformation`
    

    意味着您返回的结果仅包含该查询的单行计数。你不会得到任何错误,因为我们没有在游标上实现严格的列匹配。您需要定义一个 @QueryModel QueryModels,它有一个名为 count 的字段:

    @QueryModel // (add database reference)
    public class CountOfPost {
    
      @Column
      public int count;
    }
    

    然后

    CountOfPost count = SQLite.select(
      Method.sum(CafeWebNewPostInformation_Table.countOfNewPosts).as("count"))
      .from(CafeWebNewPostInformation.class)
      .queryCustomSingle(CountOfPost.class);  
    

    或者你也可以不打电话给querySingle(),而是打电话给count()

    reference

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-10
      • 2017-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多