我一直在寻找2小时的关于如何使用groupBy和orderBY以雄辩的方式构建查询。
这是我的情况:我有这些列的表格订单:
idOfOrder, quantityOfProduct, userWhoBuy, productBuy, statusOfOrder
我想获得最畅销的3款产品。为此,我需要构建一个查询,该查询将所有来自ProductBy的数据,来自数量的主题和来自desc的排序主题进行组合。但这非常困难。
这是我的实际查询:
$buyObj->select('product',DB::raw('count(*) as total'))
->where('status','=','1')
->groupBy('product')
->orderBy('quantity','desc')
->take(3)
->get();
我收到此错误:
SQLSTATE [42000]:语法错误或访问冲突:1055 ORDER BY子句的表达式#1不在GROUP BY子句中,并且包含非聚合列' web_projet_exia.buys.quantity'它在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by不兼容(SQL:选择
product
,count(*)为buys
的总和,其中status
= 1组product
按quantity
顺序排列{{1} } desc limit 3)"
你知道如何解决这个问题吗?
提前致谢!
答案 0 :(得分:0)
解决方案只是按总数而非按数量排序。感谢@JonasStaudenmeir