题解 | #查找描述信息中包含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

总结:把题目拆开做,再合并得到最终需求,就是SQL写的有点多

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务