原则2如何从一个连接中求和,但按两列分组



我使用Symfony和Doctrine Querybuilder返回订单列表,其中包含每个订单中所有产品的计数。这意味着我在Orders和OrderProducts之间有一个1:n的关系——OrderProducts表存储OrderID和每个产品的数量。如果我做了一个groupBy o.orderId,那么我得到了正确的Sum,但我没有得到属于orderId的所有orderProducts的数据,所以如果orderProducts表中有2个不同的产品,那么我会得到数量:2,但只有1个产品的数据,所以我需要按oi.orderProductId分组,但很明显,当我添加第二个groupBy oi.order ProductId时,TotalCount就会向我显示每个记录的总和。我完全意识到这是正确的行为,但如果有办法实现我想要做的事情,我就无法理解。我想我必须以某种方式使用子选择,但我不确定这是否可能实现。我的2张桌子和我迄今为止尝试的

tbl订单

orderId

创建日期

tblorder产品

orderProductid

orderId

数量

return $this->createQueryBuilder('o')
->select(array(
'o AS orderData',
'oi',
'sum(oi.qty)AS noOfItems'))
->join('o.orderItems', 'oi')
->groupBy('o.orderId')
->groupBy('oi.orderProductId')
->getQuery()
->execute();

我希望有人能给我一个如何实现它的提示。提前非常感谢。

groupBy()方法总是用子句替换当前组。请改用addGroupBy()方法。

相关内容

  • 没有找到相关文章

最新更新