题目歧义:‘包含robot的电影对应的分类名称(category.name)以及电影数目(count(film.film_id))’这句话就是找描述信息包含‘robot’的电影,及这种电影对应的类别包含的‘robot’电影总数,并不是该类别下电影总数。(一开始我也误解了)

思路:

  • 直接连接三张表
  • 条件1::过滤含robot的电影
  • 条件2:表连接的必要条件,电影id、分类id、电影分类关系三者联系
  • 条件3:类别的总数量要大于等于5,使用in + 子查询
  • 最后按电影类别分组。
    select c.name,count(f.film_id) as count_f
    from category as c,film as f,film_category as fc
    where f.description like '%robot%'
    and c.category_id = fc.category_id
    and f.film_id = fc.film_id
    and c.category_id in (
      select category_id
      from film_category
      group by category_id
      having count(film_id)>=5
    )
    group by c.category_id