选择sdudios,演员和在某个工作室制作的电影数量

时间:2014-11-02 21:09:10

标签: mysql

我继续使用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 

我不知道,我想要什么。你能帮我创建一下查询吗?谢谢!

1 个答案:

答案 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