【问题标题】:SQL Query Questions for a text (Nested NOT EXISTS)文本的 SQL 查询问题(嵌套不存在)
【发布时间】:2014-12-16 19:49:07
【问题描述】:

我已经为此苦苦挣扎了一段时间,所以也许有人可以提供一些见解。

我们有一个来自 TVShow 数据库的练习查询,对于这个问题有 4 个表。

查询如下:赞助 ABC 的所有电视节目的赞助商

到目前为止我尝试过的是这样,但它似乎不起作用:

SELECT DISTINCT RSPONSOR.SPONSOR_NAME FROM RSPONSOR WHERE NOT EXISTS ( SELECT * FROM RTVSHOW WHERE NOT EXISTS ( SELECT * FROM RSPONSORBY WHERE RSPONSOR.SPONSOR_NAME = RSPONSORBY.SPONSOR_NAME AND RSPONSORBY.SHOW_NUM = RTVSHOW.SHOW_NUM AND RTVSHOW.NETWORK_ID = 'ABC' ) );

希望有任何帮助!提前致谢。

以下是供参考的表格

--RTVSHOW--

SHOW_NUM    NUMBER

SHOW_NAME   VARCHAR2(20 BYTE)

START_MONTH NUMBER

START_YEAR  NUMBER

END_MONTH   NUMBER

END_YEAR    NUMBER

NETWORK_ID  VARCHAR2(20 BYTE)

DISTR_NAME  VARCHAR2(20 BYTE)

--响应者--

SPONSOR_NAME

PARENT_NAME

--RSPONSORBY--

SHOW_NUM

SPONSOR_NAME

--RNETWORK--

NETWORK_ID

NETWORK_HQ

PARENT_NAME

【问题讨论】:

  • 考虑外连接,祝你功课好运:)
  • 还可以考虑排除不赞助至少一场演出的赞助商。目前,您选择所有没有赞助商的 ABC 节目。

标签: mysql sql oracle exists


【解决方案1】:
select rSponsor.sponsor_name, rSponsor.parent_name
from rSponsor
join rSponsorBy
    on rSponsor.sponsor_name = rSponsorBy.sponsor_name
join rTVShow
    on rSponsorBy.show_num = rTVShow.show_num
join rNetwork
    on rTVShow.network_id = rNetwork.network_id
where rNetwork.network_id = 'ABC'
group by rSponsor.sponsor_name, rSponsor.parent_name
having count(distinct rTVShow.show_num) = --ABC shows sponsored by this sponsor
(
    select count(distinct rTVShow.show_num) --ABC shows
    from rTVShow
    join rNetwork
        on rTVShow.network_id = rNetwork.network_id
    where
        rNetwork.network_id = 'ABC'
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 2011-11-09
    • 1970-01-01
    相关资源
    最近更新 更多