如何通过 Left Join、count 和 group by 在 Laravel 中编写此 SQL 查询?

How can I write this SQL query in Laravel by Left Join, count and group by?

数据库有“订单”和“客户”表。 我无法将它们连接到此 usgbu 请求。

SELECT orders.serial_number, 
count(orders.order_id) as count , 
customers.customer_name FROM orders 
LEFT JOIN customers ON 
orders.customer_id = customers.customer_id 
GROUP By orders.serial_number;

我写的代码如下:

$orders = Orders::select("orders.serial_number","customers.customer_name", DB::raw("COUNT(orders.order_id) as count"))
        ->leftJoin('customers','orders.customer_id','=','customers.customer_id')
        ->groupBy('orders.serial_number')
        ->get();

出现错误信息如下:

SQLSTATE[42000]: Syntax error or access violation: 1055 'alqorshop.customers.customer_name' isn't in GROUP BY (SQL: select `orders`.`serial_number`, `customers`.`customer_name`, COUNT(orders.order_id) as count from `orders` left join `customers` on `orders`.`customer_id` = `customers`.`customer_id` group by `orders`.`serial_number`)

您的查询不正确 -- 您需要将 customers.customer_name 添加到 GROUP BY 子句或将其从 SELECT 子句中删除

这个 sql 的正确查询是:

    SELECT orders.serial_number,
    customers.customer_name, 
    count(orders.order_id) as count
    FROM orders 
    LEFT JOIN customers ON 
    orders.customer_id = customers.customer_id 
    GROUP By orders.serial_number,customers.customer_name;

    SELECT orders.serial_number,    
    count(orders.order_id) as count
    FROM orders     
    LEFT JOIN customers ON 
    orders.customer_id = customers.customer_id 
    GROUP By orders.serial_number;

您没有在 group by 子句中包含“customers.customer_name”,这就是它给出错误的原因。 通过查询将 customers.customer_name 添加到您的组或从 select 语句

中删除 customers.customer_name