题目歧义:‘包含robot的电影对应的分类名称(category.name)以及电影数目(count(film.film_id))’这句话就是找描述信息包含‘robot’的电影,及这种电影对应的类别包含的‘robot’电影总数,并不是该类别下电影总数。(一开始我也误解了)
思路:
- 直接连接三张表
- 条件1::过滤含robot的电影
- 条件2:表连接的必要条件,电影id、分类id、电影分类关系三者联系
- 条件3:类别的总数量要大于等于5,使用in + 子查询
- 最后按电影类别分组。
select c.name,count(f.film_id) as count_f from category as c,film as f,film_category as fc where f.description like '%robot%' and c.category_id = fc.category_id and f.film_id = fc.film_id and c.category_id in ( select category_id from film_category group by category_id having count(film_id)>=5 ) group by c.category_id