在3个不同的表中使用IN,INNER JOIN和EXIST进行SELECT

时间:2015-11-08 14:47:09

标签: sql oracle select inner-join

我试着让这个变得简单。

我是SQL的新手,我有一种情况需要提供3个SELECT语句做同样的事情,一个用IN,另一个用INNER JOIN,最后一个用EXISTS。通常情况下,我可以弄清楚如何去做,但这是困扰我的请求,因为我必须从一张桌子跳到另一张桌子而没有相同的#34;链接"他们之间。

所以,让我说我有这三个表及其属性:

[Channel] name_channel, URL_channel, company_channel
[Schedule_Channel] name_channel, num_movie, starting_date
[Movie] num_movie, name_movie

请求是显示播放电影“吸血鬼”的每个频道的名称,网址和公司。 2015年11月1日之后。

我的问题是,我如何跳出桌子'频道'到' Schedule_Channel'然后去电影'所以我可以同时获得starting_date和电影名称。我知道我可以使用"链接" ' name_channel'在'频道'之间和'日程安排'和#34;链接" ' num_movie'在' Schedule'之间和电影',我根本不知道如何把它写成IN,INNER JOIN和EXIST请求。

p,我希望我的问题很明确。根据我对这些要求的理解,我会做的就是:

对于IN:

SELECT name_channel, URL_channel, company_channel
FROM Channel
WHERE name_channel IN (SELECT name_channel from Schedule_Channel WHERE starting_date > to_date('20151101 00:00:00','YYYYMMDD HH24:MI:SS'))
AND name_channel IN (SELECT name_channel FROM Schedule_Channel WHERE num_movie IN (SELECT num_movie FROM Movie WHERE name_movie = 'Dracula'));

对于INNER JOIN:

SELECT c.name_channel, c.company_channel, c.URL_channel
FROM Channel c
INNER JOIN Schedule_Channel s
ON c.name_channel = s.name_channel
INNER JOIN Movie m
ON s.num_movie = s.num_movie WHERE s.starting_date > to_date('20151101 00:00:00','YYYYMMDD HH24:MI:SS') AND m.name_movie = 'Dracula';

我不知道如何为EXIST做这件事......

我希望我以正确的方式提出这个问题。对不起,如果不是这样的话。

非常感谢任何可以帮助我理解这一切的人,我脑子里一团糟:)

2 个答案:

答案 0 :(得分:0)

如果我理解正确,你需要使用EXISTS

编写相同的查询

应该是这样的:

SELECT c.name_channel, c.company_channel, c.URL_channel
FROM Channel c
  where EXISTS (
select * from Schedule_Channel s where s.name_channel = c.name_channel
    and s.starting_date > to_date('20151101 00:00:00','YYYYMMDD HH24:MI:SS') 
    and EXISTS (select * from Movie m
      where m.num_movie = s.num_movie
        and m.name_movie = 'Dracula'
    ))

答案 1 :(得分:0)

试试这个:

proc sql;
  select a.* from channel a,schedule_channel b, movie c
  where a.name_channel=b.name_channel and b.num_movie=c.num_movie
  and b.starting_date>to_date('2015-11-01','yyyy-mm-dd')
  and c.name_movie='Dracula'
相关问题