我继续使用MySQL,然后接下来。我需要选择在某个工作室的电影中出演的演员的名字。选择包括演员的电影数量,由演员主演。结果以表格的形式表示,其中包含以下列:“Studio”,“Actors”,“电影数量”。我有三张桌子:演员,工作室和电影。演员和电影有多对多,工作室和电影有多对多的关系。演员和工作室没有关系。所以我可以选择工作室,演员和电影。
SELECT studios.title, CONCAT_WS(' ', actors.name, actors.surname), films.title
FROM studios
JOIN studios_films ON studios.id = studios_films.studio_id
JOIN films ON films.id = studios_films.film_id
JOIN films_actors ON films.id = films_actors.film_id
JOIN actors ON actors.id = films_actors.actor_id
但是我怎么能得不到电影的标题,而是电影制片人的电影数量。 我想我必须使用聚合(GROUP BY)函数COUNT。但是当我在查询中使用它时
SELECT studios.title, CONCAT_WS(' ', actors.name, actors.surname), COUNT(films.id)
FROM studios
JOIN studios_films ON studios.id = studios_films.studio_id
JOIN films ON films.id = studios_films.film_id
JOIN films_actors ON films.id = films_actors.film_id
JOIN actors ON actors.id = films_actors.actor_id
GROUP BY filmstudios.id
我不知道,我想要什么。你能帮我创建一下查询吗?谢谢!
答案 0 :(得分:3)
您可以将GROUP BY
子句与多列一起使用。通过这种方式,您可以计算每个工作室/演员组合的电影数量。
您的完整查询如下所示:
SELECT studios.title, CONCAT_WS(' ', actors.name, actors.surname), COUNT(films.id)
FROM studios
JOIN studios_films ON studios.id = studios_films.studio_id
JOIN films ON films.id = studios_films.film_id
JOIN films_actors ON films.id = films_actors.film_id
JOIN actors ON actors.id = films_actors.actor_id
GROUP BY studios.id, actors.id
您可以在此处阅读GROUP BY
条款中有关多列的详情:
关于SO的问题:Using group by on multiple columns
教程:http://dba.fyicenter.com/faq/mysql/Use-Multiple-Columns-in-GROUP-BY.html