Php 查询生成器中的查询关系和分组依据
在我的查询中得到一个sql错误,我相信可能是我的查询生成器的格式不正确,但我无法找出我做错了什么 Alredy试着在DB中直接测试我的查询,它可以工作,但是当使用查询生成器进行翻译时,它不起作用Php 查询生成器中的查询关系和分组依据,php,mysql,laravel-5,query-builder,laravel-query-builder,Php,Mysql,Laravel 5,Query Builder,Laravel Query Builder,在我的查询中得到一个sql错误,我相信可能是我的查询生成器的格式不正确,但我无法找出我做错了什么 Alredy试着在DB中直接测试我的查询,它可以工作,但是当使用查询生成器进行翻译时,它不起作用 $totalUserForCountry = DB::table('countries') ->select('countries.name', DB::raw('COUNT(users.country_id) as total')) ->join('users', 'use
$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”不在SQL组中:选择countries.name、COUNTusers.country\u id作为来自国家/地区的总计
users.country\u id=countries.id用户组的内部加入用户。country\u 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;
另外,只有当我在sql查询中使用group by子句时将“strict”模式禁用为false时,select子句才有效。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;
你有数据库表前缀吗?这不是怎么回事。。生成的SQL是选择countries.name、COUNTusers.country\u id作为来自国家/地区内部联接的总计。。。,,,,GROUP BY users.country_id上的用户无效ANSI/iSO SQL 92由于您的查询错误,我建议您阅读并提供示例数据和预期结果。。我知道我需要如何像这里的大多数人一样用SQL编写它,但我不能100%确定最简单的方法是如何在Laravel中工作,很可能你需要使用Alredy[sic]尝试在DB中直接测试我的查询[sic],它可以工作-证明它。你不只是添加询问字段吗?->groupBy'users.country\u id'、'countries.name'谢谢Anmol,这是我试图找到的答案类型,我在网上查看了很多例子,说要禁用stric模式,但没有一个解释我为什么要这么做或问题出在哪里。谢谢!