我有以下 4 个 SQL 表:
工作室
整数 id
字符串名称
整数 last_movie_id
电影
整数 id
整数 studio_id
字符串类型
actor_movie
整数 movie_id
整数 actor_id
演员
整数 id
字符串 名称
我正在尝试构建一个查询,为我提供特定演员,他工作的工作室的列表,包括工作室的最后一部电影(无论演员是否在其中扮演):
- 工作室名称
- 该工作室最后一部电影的日期
- 该工作室最后一部电影的类型
我的代码如下(在 ActorController 中):
$actor = \App\Actor::findOrFail($id);
$studios = \DB::table('actor_movie')
->leftjoin('movies', 'actor_movie.movie_id', '=', 'movies.id')
->leftjoin('studios', 'studios.id', '=', 'movies.studio_id')
->select(
'studios.name',
'studios.last_movie_date'
\DB::raw('(SELECT movies.type FROM movies WHERE movies.id = studios.last_movie_id') as type')
->where('actor_movie.actor_id', $actor->id)
->groupBy('studios.name', 'studios.last_movie_date', 'type')
->get();
但我有以下错误: SQLSTATE [42000]:语法错误或访问冲突:1055 SELECT 列表的表达式#3 不在 GROUP BY 子句中,并且包含非聚合列 [...] 这与 sql_mode=only_full_group_by 不兼容
我不想将 sql_strict_mode 设置为 false 以规避此错误。我想了解我的查询有什么问题。我尝试使用像“ANY_VALUE”这样的聚合函数,但没有任何结果。