如何获取Ent中数字列的总和

我有两个表:products和baskets,它们具有M2M关系并且表名是basket_products。我正在尝试获取与特定篮子相关的products总数price和数量,但我再次陷入困境。如何修复以下代码以获得结果?注意:我正在使用Ent框架


   err = client.Basket.

        Query().

        Where(basket.ID(2)).

        WithProducts().

        QueryProducts().

        GroupBy("price").

        Aggregate(func(selector *sql.Selector) string {

            return sql.As(sql.Sum("price"), "price")

        }).Scan(ctx, &r)

    if err != nil {

        log.Println(err)

    }

    log.Println(r)


眼眸繁星
浏览 101回答 1
1回答

慕的地6264312

和Aggregate功能GroupBy是朋友。聚合 | 耳鼻喉科我修改了下面给出的代码并得到了一个非常优化的SQL查询,感谢 Ent 团队。err := client.Basket.        Query().        Where(basketEntity.ID(ID)).        GroupBy(basketEntity.FieldID).        Aggregate(func(s *sql.Selector) string {            t := sql.Table(product.Table)            joinT := sql.Table(basketEntity.ProductsTable)            s.Join(joinT).                On(s.C(basketEntity.FieldID), joinT.C(basketEntity.ProductsPrimaryKey[0]))            s.Join(t).                On(t.C(product.FieldID), joinT.C(basketEntity.ProductsPrimaryKey[1]))            return sql.As(sql.Sum(t.C(product.FieldPrice)), "price")        }).        Aggregate(repository.Count()).        Scan(ctx, &report)生成的SQL:SELECT "baskets"."id", SUM("t2"."price") AS "price", COUNT(*) FROM "baskets" JOIN "basket_products" AS "t1" ON "baskets"."id" = "t1"."basket_id" JOIN "products" AS "t2" ON "t2"."id" = "t1"."product_id" WHERE "baskets"."id" = $1 GROUP BY "baskets"."id" args=[1]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go