答案
select c.name, count(f.film_id) from film f, category c, film_category fc where f.film_id = fc.film_id and c.category_id = fc.category_id and f.description like '%robot%' and fc.category_id in ( select category_id from film_category group by category_id having count(film_id)>=5 /*包含电影数量超过5部的分类列表*/ ); /*考察like, 通配符%, having*/
错误答案
select c.name, count(f.film_id) from film f, category c, film_category fc where f.film_id = fc.film_id and c.category_id = fc.category_id and f.description like '%robot%' and count(fc.category_id)>=5;
错误原因:
描述信息(film.description)中包含robot的电影对应的分类不一定只有一个,所以需要额外用一个select,先筛选出来包含电影数量超过5部的分类,而不是直接count(fc.category_id)>=5。
题干中,“而且还需要该分类包含电影总数量(count(film_category.category_id))>=5部”,里面的(count(film_category.category_id))>=5感觉就是在诱惑我们答题的时候直接用,但实际上,不看这个代码,只看文字也可以理解题意。