2021-07-21 刷题28、29、30题

SQL28 查找描述信息中包含robot的电影对应的分类名称以及电影数目,而且还需要该分类对应电影数量>=5部


SQL 28 题目


SQL 28 题目


SQL 28 题目

思路:三表连接

需要仔细拆解题目的意思。

注意事项:

描述信息中包含robot使用LIKE;

分类要求包含电影总数量,是对于分类类别的要求,而不是对于包含robot电影的要求,所以不能直接在条件f.description like '%robot%'

后面直接根据条件筛选count(film_category.film_id)>=5;

题目中有误导,分类的电影总数量应该是count(film_categoryfilm_id),而不是count(film_category.category_id)

解答:

SELECT a.`name`,count(a.film_id) FROM

(SELECT f.film_id, f.title,fc.category_id,c.`name`

FROM film as f

inner JOIN film_category as fc on fc.film_id = f.film_id

INNER join category as c on c.category_id = fc.category_id

WHERE f.description like '%robot%') as a        ##查找出带有robot的电影

inner JOIN

(SELECT fc.category_id,count(fc.film_id) as num  FROM film_category as fc

GROUP BY fc.category_id

HAVING num >= 5) as b           ###查找出存在>=五部的电影类型

on a.category_id = b.category_id



SQL29 使用join查询方式找出没有分类的电影id以及名称



SQL 29 题目
SQL 29 题目
SQL 29 题目


解答:

内连接+not in

SELECT film_id,title FROM film

WHERE film_id not in

(SELECT fc.film_id FROM film_category as fc

JOIN category as c

on c.category_id = fc.category_id)




SQL30使用子查询的方式找出属于Action分类的所有电影对应的title,description



SQL 30 题目


SQL 30 题目
SQL 30 题目

解答:

子查询,即不可以用join连接

SELECT

title,

description

FROM

film

WHERE

film_id IN ( SELECT film_id FROM film_category WHERE category_id IN ( SELECT category_id FROM category WHERE NAME = "Action" ) )


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容