在我的查询中出现 sql 错误,我相信我的查询生成器可能格式错误,但无法弄清楚我做错了什么。
已经尝试直接在数据库中测试我的查询并且它有效,但是当使用查询生成器进行翻译时它不起作用。
$totalUserForCountry = DB::table('countries')
->select('countries.name', DB::raw('COUNT(users.country_id) as total'))
->join('users', 'users.country_id', '=', 'countries.id')
->groupBy('users.country_id')
->get();
我的错误代码是:
SQLSTATE[42000]: Syntax error or access violation: 1055 'db.countries.name' isn't in GROUP BY (SQL: select
countries
.name
, COUNT(users.country_id) as total fromcountries
inner joinusers
onusers
.country_id
=countries
.id
group byusers
.country_id
)
Mysql直接查询数据库:
SELECT ct.name AS CountryName, COUNT(us.country_id) AS NumberOfUsers FROM countries AS ct
INNER JOIN users AS us
ON
us.country_id = ct.id
GROUP BY us.country_id;
附注仅当我将“严格”模式禁用为 false 时才有效
最佳答案
在 SQL 查询中使用 group by 子句时,select 子句只能包含您在 group 子句中使用的那些列。
上述问题的sql查询将是:
SELECT ct.name AS CountryName, COUNT(us.country_id) AS NumberOfUsers FROM countries AS ct
INNER JOIN users AS us
ON
us.country_id = ct.id
GROUP BY us.country_id,ct.name;
关于php - 查询生成器中的查询关系和分组依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56341505/