答案
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感觉就是在诱惑我们答题的时候直接用,但实际上,不看这个代码,只看文字也可以理解题意。

京公网安备 11010502036488号