题目描述
查找描述信息中包括robot的电影对应的分类名称以及电影数目,而且还需要该分类对应电影数量>=5部
CREATE TABLE IF NOT EXISTS film (
film_id smallint(5) NOT NULL DEFAULT '0',
title varchar(255) NOT NULL,
description text,
PRIMARY KEY (film_id));
CREATE TABLE category (
category_id tinyint(3) NOT NULL ,
name varchar(25) NOT NULL, `last_update` timestamp,
PRIMARY KEY ( category_id ));
CREATE TABLE film_category (
film_id smallint(5) NOT NULL,
category_id tinyint(3) NOT NULL, `last_update` timestamp);
解题方案
本题考查的是多表关联,本身有三个表关联,但是由于有条件说分类下的电影总数>=5,所以可以先查询出film_category表内满足条件的category_id,然后与其他三表进行关联即可。
select c.name,count(fc.film_id)
from (
select category_id,count(film_id) as amount
from film_category
group by category_id
having amount>=5
) as cc,
category as c,
film as f,
film_category as fc
where f.film_id = fc.film_id
and fc.category_id = c.category_id
and cc.category_id = c.category_id
and f.description like '%robot%'