牛客网数据库SQL实战28—— 查找描述信息中包括robot的电影对应的分类名称以及电影数目,而且还需要该分类对应电影数量>=5部

牛客网数据库SQL实战28—— 查找描述信息中包括robot的电影对应的分类名称以及电影数目,而且还需要该分类对应电影数量>=5部

题目描述

film表

字段 说明
film_id 电影id
title 电影名称
description 电影描述信息
    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));

category表

字段 说明
category_id 电影分类id
name 电影分类名称
last_update 电影分类最后更新时间
    CREATE TABLE category  (
    category_id  tinyint(3)  NOT NULL ,
    name  varchar(25) NOT NULL, `last_update` timestamp,
    PRIMARY KEY ( category_id ));

film_category表

字段 说明
film_id 电影id
category_id 电影分类id
last_update 电影id和分类id对应关系的最后更新时间
    CREATE TABLE film_category  (
    film_id  smallint(5)  NOT NULL,
    category_id  tinyint(3)  NOT NULL, `last_update` timestamp);

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

输出描述:

我的解答

select c.name as name,count(*) as count
from category c
left join film_category fc
on c.category_id = fc.category_id
where c.category_id in(
    select category_id
    from film_category
    group by category_id
    having count(*) >= 5
)
and fc.film_id in(
    select film_id
    from film
    where description like '%robot%'
)
group by c.name

根据题意,category_id 需要满足该分类对应电影数量>=5部 ,film_id 需要满足描述信息中包括robot,再做个表连接即可。

我觉得最好的答案

select name,count(name)
from film,film_category,category
where film.description like '%robot%' and film.film_id= film_category.film_id and film_category.category_id= category.category_id
and category.category_id in (select category_id from film_category group by category_id having count(film_id)>=5)

先查询出电影数量大于5的分类的集合,然后限定category必须在该集合中

发布了175 篇原创文章 · 获赞 58 · 访问量 37万+

猜你喜欢

转载自blog.csdn.net/sunbocong/article/details/105721004