在查询中出现sql错误,我认为查询构建器格式可能不正确,但无法弄清楚我在做什么错。
Alredy尝试直接在数据库中测试我的查询,它可以工作,但是当使用查询生成器进行翻译时,它不起作用。
$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]:语法错误或访问冲突:1055'db.countries.name'不在GROUP BY中(SQL:选择
countries
。name
,COUNT(users.country_id)来自countries
的总数
users
上的内部联接users
。country_id
=countries
。id
按users
分组。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;
P.S。仅当我将“严格”模式禁用为假时才有效
答案 0 :(得分:1)
在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;