Function.count 在包含 Join 的查询上返回 0

问题描述 投票:0回答:1

我有以下文件

Category(type="category", catId = 1, name = "cat")

以及具有

的产品
Product(catId=1, type="product"), Product(catId=1, type="product")

现在我想获取所有类别(所有领域)的列表以及每个类别的产品总数。查询运行并正确返回所有类别,但每个类别的产品总数为 0。不过,我确信每个类别都有一个产品。

val catAlias = "catAlias"
        val productAlias = "productAlias"

        val q =
            QueryBuilder
                .select(
                    SelectResult.expression(Function.count(Expression.property("$productAlias.catId").from(productAlias))).`as`("totalProducts"),
                    SelectResult.all().from(catAlias),
                    SelectResult.expression(Meta.id.from(catAlias)).`as`("metaId"),

                    )
                .from(
                    DataSource.database(readsDB).`as`(catAlias),
                )
                .join(
                    Join.leftJoin(DataSource.database(readsDB).`as`(productAlias))
                        .on(
                            Expression.property("$productAlias.type").equalTo(
                                Expression.string(
                                    "product",
                                ),
                            )
                                .and(
                                    Expression.property("$productAlias.catId")
                                        .equalTo(Expression.property("$catAlias.catId")),
                                ),
                        ),
                )
                .where(
                    Expression.property("$catAlias.type").from(catAlias)
                        .equalTo(Expression.string("category")),

                    ).groupBy(
                Expression.property("$catAlias.catId")
            )

可能是什么错误?

couchbase-lite
1个回答
0
投票

不确定这是否是正确的方法,但这解决了它:

            SelectResult.expression(Function.count(Expression.string("*"))).`as`("productsCount")
© www.soinside.com 2019 - 2024. All rights reserved.