首页 > 试题广场 >

使用子查询的方式找出属于Action分类的所有电影对应的ti

[编程题]使用子查询的方式找出属于Action分类的所有电影对应的ti
  • 热度指数:134697 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
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);

你能使用子查询的方式找出属于Action分类的所有电影对应的title,description吗



输入描述:


输出描述:
示例1

输入

drop table if exists   film ;
drop table if exists  category  ; 
drop table if exists  film_category  ; 
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);
INSERT INTO film VALUES(1,'ACADEMY DINOSAUR','A Epic Drama of a Feminist And a Mad Scientist who must Battle a Teacher in The Canadian Rockies');
INSERT INTO film VALUES(2,'ACE GOLDFINGER','A Astounding Epistle of a Database Administrator And a Explorer who must Find a Car in Ancient China');
INSERT INTO film VALUES(3,'ADAPTATION HOLES','A Astounding Reflection of a Lumberjack And a Car who must Sink a Lumberjack in A Baloon Factory');

INSERT INTO category VALUES(1,'Action','2006-02-14 20:46:27');
INSERT INTO category VALUES(2,'Animation','2006-02-14 20:46:27');
INSERT INTO category VALUES(3,'Children','2006-02-14 20:46:27');
INSERT INTO category VALUES(4,'Classics','2006-02-14 20:46:27');
INSERT INTO category VALUES(5,'Comedy','2006-02-14 20:46:27');
INSERT INTO category VALUES(6,'Documentary','2006-02-14 20:46:27');

INSERT INTO film_category VALUES(1,1,'2006-02-14 21:07:09');
INSERT INTO film_category VALUES(2,1,'2006-02-14 21:07:09');
INSERT INTO film_category VALUES(3,6,'2006-02-14 21:07:09');

输出

ACADEMY DINOSAUR|A Epic Drama of a Feminist And a Mad Scientist who must Battle a Teacher in The Canadian Rockies
ACE GOLDFINGER|A Astounding Epistle of a Database Administrator And a Explorer who must Find a Car in Ancient China
select
title,description
from
film
where film_id in (
    #连接film_category和category得到'Action'的电影id
    select film_id 
    from film_category as fc
    inner join
    category as c
    on fc.category_id =c.category_id
    where c.name='Action'
)
发表于 2022-09-06 17:35:36 回复(0)
select title ,description 
from film f 
where f.film_id in (select fc.film_id 
                    from category c join film_categaory fc  
                   on c.category_id=fc.category_id
                   where name='Action')
大佬帮忙看看那里出问题呀
发表于 2022-08-17 17:07:43 回复(0)
select    
    title,
    description
from
    film
where
    film_id in
         -- 找出Action分类的电影id
         (select
             film_id
          from    
             film_category f,
             category c
          where
             c.category_id=f.category_id
             and c.name='Action');

发表于 2022-05-17 10:22:14 回复(0)

select title, description
from film
where film_id in (
    select  film_id
    from  film_category where category_id in (
        select  category_id
        from  category 
        where  name = 'Action'
    )
)
发表于 2022-04-15 19:11:53 回复(0)
像洋葱一样,一层一层剥开。
SELECT title, description FROM film
WHERE film_id in (SELECT film_id FROM film_category
                  WHERE category_id in (
                                        SELECT category_id FROM category
                                        WHERE name = 'Action'))
发表于 2022-04-02 21:31:37 回复(0)
From 子查询

select *
from(
select f.title,f.description
    from film f
    join film_category fc on f.film_id = fc.film_id
    join category c on c.category_id = fc.category_id
    where c.name = 'Action'
 )
--来自在深圳居家办公的果果果子2022年3月14日15:33
发表于 2022-03-14 15:33:24 回复(0)
select a.title,a.description
from film a inner join 
(select c.film_id,b.category_id,b.name
from category b inner join film_category c 
on b.category_id=c.category_id)d 
on a.film_id=d.film_id
where d.name='Action'
后两个表内连接获得name,用where筛选。与第一个表连接,获得title和description。
发表于 2022-02-23 16:13:08 回复(0)
select title , description 
from film
where film_id in 
(select f.film_id 
 from film_category f,category c
where f.category_id = c.category_id
and  c.name like 'action')
发表于 2021-11-08 18:07:51 回复(0)
select f.title,f.description from film f,(
select fc.film_id from category c,film_category fc where fc.category_id = c.category_id
and c.name = 'Action') a
where a.film_id = f.film_id
group by f.title
发表于 2021-10-27 15:15:06 回复(0)
SELECT f.title, f.description
FROM film as f 
JOIN film_category as fc 
ON f.film_id = fc.film_id
JOIN category as c 
ON fc.category_id = (SELECT category_id FROM category 
                     WHERE name = 'Action');
不知道为什么我这么写的话,他会输出4组一模一样的答案,然后算我错,一定要加上DISTINCT
SELECT DISTINCT f.title, f.description
FROM film as f 
JOIN film_category as fc 
ON f.film_id = fc.film_id
JOIN category as c 
ON fc.category_id = (SELECT category_id FROM category 
                     WHERE name = 'Action');
这样才能输出正确答案,有人知道是为什么吗



发表于 2021-09-25 17:50:46 回复(0)
select title,description
from film
where film_id in (
select film_id
from film_category fc
left join category c
on fc.category_id=c.category_id
where name='Action')
发表于 2021-09-24 18:31:12 回复(0)
这个题没什么营养,有必要强行凑难度吗?既然join 了,全部join 起来不可以吗?in 不是更费内存吗?

发表于 2021-08-01 22:01:07 回复(0)