你的问题不太清楚。那是因为你没有表现出想要的结果。
在您的查询中,您将选择一列推荐的电影标题和另一列带有投票的内容。但是,这些并不相关,因为您没有指定订单。因此,例如,第一部推荐的电影可能会显示第五次投票。即使投票按电影排序,仍然很难阅读。
因此,从理想的结果开始。然后才编写查询。
Example:
预期结果:
movie_title | roles | recommendations
------------------+--------------------------------+------------------------
The Dark Knight | Christian Bale (Bruce Wayne / | The Dark Knight Rises (7.5),
| Batman), Michael Caine (Alfred | Batman Begins (7.5), Iron
| Pennyworth), ... | Man (7.3), ...
因此,我们需要来自演员表(每部电影的所有角色)和推荐表(每部电影的所有推荐)的聚合。先进行聚合,然后连接结果:
SELECT
m.movie_title,
c.roles,
r.movies as recommendations
FROM tmdb_movies m
LEFT JOIN
(
SELECT
cast_tmdb_id as movie_id,
GROUP_CONCAT(CONCAT(cast_name, ' (', cast_character, ')') SEPARATOR ', ') as roles
FROM cast
GROUP BY cast_tmdb_id
) c ON c.movie_id = m.tmdb_id
LEFT JOIN
(
SELECT
recommendations_tmdb_id as movie_id,
GROUP_CONCAT(CONCAT(recommendations_title, ' (', recommendations_vote_average, ')')
SEPARATOR ', ') as movies
FROM recommendations
GROUP BY recommendations_tmdb_id
) r ON r.movie_id = m.tmdb_id
WHERE m.tmdb_id = 1;
这是 reextester 链接:http://rextester.com/FHA48503 http://rextester.com/FHA48503