MySQL Sakila DB,获取类别列表,并统计哪位演员出现最多
所以我在学习MySQL,使用Sakila DB。结构简单,, 表:演员、演员、电影、电影类别、类别 我需要得到所有类别的列表,并计算演员在每个类别中出现的次数。如果为0次,则显示行“操作”“0” 正在尝试此查询:`MySQL Sakila DB,获取类别列表,并统计哪位演员出现最多,mysql,sql,count,left-join,where-clause,Mysql,Sql,Count,Left Join,Where Clause,所以我在学习MySQL,使用Sakila DB。结构简单,, 表:演员、演员、电影、电影类别、类别 我需要得到所有类别的列表,并计算演员在每个类别中出现的次数。如果为0次,则显示行“操作”“0” 正在尝试此查询:` SELECT c2.name genre, COUNT(c2.name) appear FROM category c2 JOIN film_category fc ON c2.category_id = fc.category_id JOIN film_actor fa ON
SELECT c2.name genre, COUNT(c2.name) appear
FROM category c2
JOIN film_category fc ON c2.category_id = fc.category_id
JOIN film_actor fa ON fc.film_id = fa.film_id
JOIN actor a ON fa.actor_id = a.actor_id
WHERE a.actor_id = 1
GROUP by c2.name, c2.category_id
ORDER by appear ASC
但这只返回演员出现的类别,而不是所有类别。
非常感谢你的帮助
`您想要
左连接
s:
SELECT c.name genre, COUNT(a.actor_id) appear
FROM category c
LEFT JOIN film_category fc ON c.category_id = fc.category_id
LEFT JOIN film_actor fa ON fc.film_id = fa.film_id
LEFT JOIN actor a ON fa.actor_id = a.actor_id AND a.actor_id = 1
GROUP by c.name, c.category_id
ORDER by appear
注:
- 参与者的筛选必须转到相关的
的join
子句,否则它会筛选出给定参与者未出现的类别on
- 因此,您需要依赖于来自actor表的列
是默认排序顺序,因此无需指定它asc