【问题标题】:Aggregate subquery in doctrine2 QueryBuilder在教义 2 QueryBuilder 中聚合子查询
【发布时间】:2015-06-17 13:36:04
【问题描述】:

我想计算所有房间的总数。他们加入了指控:

    return $this->createQueryBuilder('r')
        ->select("COUNT(r) AS num,
            SUM(r.rent) AS rent,
            SUM(c.price) AS charges")
        ->leftJoin('r.charges', 'c')
        ->getQuery()
        ->getSingleResult();

显然它会抛出异常,因为结果不是单一的。如何将此子查询添加到构建器?

谢谢

【问题讨论】:

    标签: mysql symfony doctrine-orm dql


    【解决方案1】:

    SQL 的一般经验法则,当您包含聚合函数(COUNT()SUM()MIN()MAX() 等)时,您还需要一个 GROUP BY 子句。这应该就是你需要的全部了

    return $this->createQueryBuilder('r')
        ->select("COUNT(r) AS num")
        ->addSelect("SUM(r.rent) AS rent")
        ->addSelect("SUM(c.price) AS charges")
        ->leftJoin('r.charges', 'c')
        // Group aggregates per room
        ->groupBy('r.id')
        ->getQuery()
        ->getSingleResult();
    

    【讨论】:

      猜你喜欢
      • 2012-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多