我正在Laravel开发一个电影跟踪应用,我目前在Ratings
上试图加入Movies
,但我想我几乎就在那里我只是我不知道如何准确到达我想去的地方。
这是我当前的工作查询(使用->toSql()
,但它在我的应用中是一个雄辩的查询):
SELECT
`movies`.*,
`ratings`.`user`,
`ratings`.`favorite`,
`ratings`.`created_at` AS `rating_created_at`,
`ratings`.`updated_at` AS `rating_updated_at`,
`users`.`id` AS `user_id`,
`users`.`name` AS `user_name`
FROM
`movies`
INNER JOIN
`ratings` ON `movies`.`tmdb_id` = `ratings`.`tmdb_id`
INNER JOIN
`users` ON `ratings`.`user` = `users`.`id`
WHERE
`ratings`.`favorite` = 1
GROUP BY `ratings`.`tmdb_id`
ORDER BY `ratings`.`created_at` DESC
以下是问题所在:
由于多人可以收藏电影,因此其输出会为每部具有匹配评分行的电影显示重复的电影:ratings.user
。
我想要的是什么:
ratings.user
列知道谁喜欢该电影,并在电影中显示他们的名字我感到困惑的是如何能够获取与给定电影相关联的所有用户数据,而不会重复其返回。
编辑:我更新了我的SQL查询以包含用户表,以便我可以访问他们的名字,但具体而言,上面的第3点仍然是一个问题。