📜  门| GATE-CS-2009 |第 55 题

📅  最后修改于: 2021-09-27 05:41:57             🧑  作者: Mango

考虑以下关系模式:

Suppliers(sid:integer, sname:string, city:string, street:string)
Parts(pid:integer, pname:string, color:string)
Catalog(sid:integer, pid:integer, cost:real)

考虑对上述数据库的以下关系查询:

SELECT S.sname
    FROM Suppliers S
        WHERE S.sid NOT IN (SELECT C.sid
                            FROM Catalog C
                            WHERE C.pid NOT IN (SELECT P.pid  
                                                FROM Parts P
                                                WHERE P.color<> 'blue'))

假设上述模式对应的关系不为空。以下哪一项是上述查询的正确解释?
(A)找出所有供应过非蓝色零件的供应商的名称。
(B)找出所有未提供非蓝色零件的供应商的名称。
(C)找出所有只供应蓝色零件的供应商的名称。
(D)找出所有不只供应蓝色零件的供应商的名称。答案: (D)
说明: None 选项匹配,因为给定的查询返回没有提供任何蓝色部件的供应商。这意味着它可以包含蓝色以外的部分。

(A):错误,因为这可能包括蓝色部分,可能不包括“空”部分。

(B):显然是错误的,因为它返回的不是任何蓝色部分。

(C):显然是错误的,因为它不返回 this。

(D):正确。请在这里尝试:http://sqlfiddle.com/#!9/9ae12d/1/0

此解释由Archit Garg 提供
这个问题的测验