我继续与MySQL的经验,并有下一个。我需要选择演员的名字,谁在电影中主演的某间工作室。其中包括由演员主演的电影制片厂的电影数量。结果以表格的形式表示,列如下:"Studio“、"Actors”、"Number of films“。我有三张桌子:演员,工作室和电影。演员和电影有多对多的关系,制片厂和电影有多到多的关系.演员和工作室没有关系。这样我就可以选择工作室演员和电影了。
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 但是,我怎么才能获得演员主演的电影公司的片名,而不是片名呢?我想我必须使用聚合(组)函数计数。但是当我在查询中使用它时
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 我不明白,我想要什么。你能帮我创建查询吗?谢谢!
发布于 2014-11-02 21:18:25
可以在多列中使用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
https://stackoverflow.com/questions/26704440
复制相似问题