Sql 为什么groupby查询会创建语法错误
我对拉维尔的群比有意见。写入的错误是:Sql 为什么groupby查询会创建语法错误,sql,laravel,Sql,Laravel,我对拉维尔的群比有意见。写入的错误是: SQLSTATE[42000]: Syntax error or access violation: 1055 'smf.serije_epizode.id' isn't in GROUP BY (SQL: select * from `serije_epizode` where `id_serije` = 1 group by `sezona` order by `sezona` asc) 此外,数据库中的字段包括: laravel框架中的查询是:
SQLSTATE[42000]: Syntax error or access violation: 1055 'smf.serije_epizode.id' isn't in GROUP BY (SQL: select * from `serije_epizode` where `id_serije` = 1 group by `sezona` order by `sezona` asc)
此外,数据库中的字段包括:
laravel框架中的查询是:
public function prikaz($id)
{
$serija = DB::table('serije')
->where('id', $id)
->first();
$epizode = DB::table('serije_epizode')
->where('id_serije', '=', $id)
->orderBy('sezona', 'asc')
->groupBy('sezona')
->get();
return view('serije.prikaz', ['serija' => $serija, 'epizode' => $epizode]);
}
视图刀片:
@foreach ($epizode as $serijaa)
Sezona: {{$serijaa->sezona}} | Epizoda: {{$serijaa->br_epizode}} - {{$serijaa->naziv}
@endforeach
所以为什么我不能用“sezona”(平均季节)来分组呢。我做错了什么。谢谢。:) 您请求所有列,但未处理(或计算)列,则必须将它们添加到group by子句中。解决此问题的方法有多种 第一个也是“最佳实践”是在select查询中包含you列
DB::table('serije_epizode')
->select('id_serije')
->where('id_serije', '=', $id)
->orderBy('sezona', 'asc')
->groupBy('sezona')
->get();
在select中,您必须有您的groupBy
列,或者通常,select中的任何内容都应该在groupBy
Group by可以接受多个值,因此您可以在select中使用如下内容:
select('serije_epizode','sezona','id_serije')
而在你的小组里你也应该有同样的经历
groupBy('serije_epizode','sezona','id_serije')
第二个和“不太好的实践”,但在许多项目中都看到过,它在您的数据库.php
文件中,您将找到您的mysql设置
您将在其中找到一个名为strict
的字段,该字段的值为true
。如果将其更改为false
并运行php-artisan-config:cache
您的分组依据将起作用
我强烈建议选择第一个选项,或者更好地创建一个模型并使用雄辩,但这取决于您
您的另一个选项可能是使用distinct()
或unique()
从列返回唯一值,而不是groupBy
必须在group by子句中声明select列表中不是计算列的每一列。感谢您的建议,但它仍然不起作用。我收到错误:语法错误或访问冲突:1055'smf.serije\u epizode.id\u serije'不在分组依据中(SQL:selectid\u serije
,sezona
,br\u epizode
来自serije\u epizode
其中id\u serije
=1个分组依据sezona
order BYsezona
asc,br\u epizode>asc)从你的错误判断,你没有使用我的答案。在select中仍然有3列,在groupby中仍然有1列。当我在groupby中添加id_serije时,仍然会得到相同的错误。语法错误或访问冲突:1055“smf.serije_epizode.br_epizode”不在组中(SQL:选择id\u serije
,sezona
,br\u epizode
从serije\u epizode
中,其中id\u serije
=1组由id\u serije
,sezona
按sezona
asc,br\u epizode
asc)当我在GroupBY中添加所有3个字段时,我得到的结果与没有GroupBY的结果相同。我有一个电视节目是(id_serije/id_show),然后给季节和剧集编号。我想按id查找电视节目,然后按季节对所有epizodes进行分组。这是我找不到的结果。我的答案中有1个以上的解决方案:)如果你不能得到这份工作,那就试试下一份吧。我会把第二个当作最后一个。