我使用selectquery和used group从orderproduct中选择sum。在本地的mysql服务器上,但在sql服务器上。在本地中没有错误,但在服务器中有错误:
2020-07-24 10:21:35错误:[pdoexception]sqlstate[42000]:[microsoft][odbc driver 17 for sql server][sql server]列“products.product\u name”在选择列表中无效,因为它不包含在聚合函数或group by子句中。
我的控制器代码是:
$getQuery = $this->OrderProduct
->find('all', [
'contain' => [
'Orders' => ['PaymentMethods'],
'Products' => ['ProductType']
]
])
->select([
'product_name' => 'Products.product_name',
'count' => 'SUM(OrderProduct.qty)',
'actual_rate' => 'SUM(OrderProduct.actual_rate)',
'order_date' => 'Orders.order_date',
'payment_gateway' => 'PaymentMethods.payment_gateway'
])
->where($conditions);
$getQuery->where([
'Products.is_deleted' => 'n'
]);
$getQuery->matching('Products.ProductType');
$getQuery->where([
'ProductType.slug' => $searchparams['product_type_id']
]);
$getQuery->where([
'Orders.order_status NOT IN' => ['payment_pending']
]);
$getAll = $getQuery->group('OrderProduct.product_id');
1条答案
按热度按时间n3ipq98p1#
您的查询使用“orderproduct”中的“product\u id”字段进行分组,因此您必须指定哪些值应该从未分组的字段返回。
您将使用聚合函数执行此操作,如错误消息所示:
因此,您可以更改代码以获得最大值:
或将组更改为: