题解 | #查找描述信息中包含robot的电影对应的分类名称以及电影数目,而且还需要该分类对应电影数量>=5部#
查找描述信息中包含robot的电影对应的分类名称以及电影数目,而且还需要该分类对应电影数量>=5部
http://www.nowcoder.com/practice/3a303a39cc40489b99a7e1867e6507c5
1.查询fc.category_id,c.name,f.title,从结果可以看出每部电影对应的类型id和类型名称
select fc.category_id,c.`name`,f.title from film_category fc,film f,category c where fc.film_id=f.film_id and fc.category_id=c.category_id
2.过滤出电影描述中含有robot的数据;从结果看出只有一条记录(同样意味着符合条件的电影数目为1),从这里知道描述包含robot的电影对应的分类名称
select fc.category_id,c.`name`,f.title from film_category fc,film f,category c where fc.film_id=f.film_id and fc.category_id=c.category_id and f.description like '%robot%'
3.制做表t1,分组统计,完成题目逗号之前的要求
select fc.category_id,c.`name`,count(f.film_id) as num_film from film_category fc,film f,category c where fc.film_id=f.film_id and fc.category_id=c.category_id and f.description like '%robot%' group by c.category_id
4.制作表t2,根据类型名称分组并筛选出电影记录>=5所对应的电影类型Id和名称
select c.category_id,c.`name` from film f,category c,film_category fc where fc.film_id=f.film_id and fc.category_id=c.category_id group by c.`name` having count(f.film_id)>=5
5.整合两张表来找到满足题目要求的分类以及该分类中包含‘robot’的电影数
select t1.name,t1.num_film from ( select fc.category_id,c.`name`,count(f.film_id) as num_film from film_category fc,film f,category c where fc.film_id=f.film_id and fc.category_id=c.category_id and f.description like '%robot%' group by c.category_id ) as t1,( select c.category_id,c.`name` from film f,category c,film_category fc where fc.film_id=f.film_id and fc.category_id=c.category_id group by c.`name` having count(f.film_id)>=5 )as t2 where t1.category_id=t2.category_id