如何通过 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
数据库有“订单”和“客户”表。 我无法将它们连接到此 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