考虑以下关系模式:
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)
说明:没有选项匹配,因为给定查询返回了未提供任何蓝色零件的供应商。这意味着它可以包括蓝色部分以外的其他部分。
(A):错误,因为这可能包括蓝色部分,并且可能不包括“空”部分。
(B):显然是错误的,因为它返回的不是蓝色部分。
(C):显然为假,因为它不返回此值。
(D):正确。请在这里尝试:http://sqlfiddle.com/#!9/9ae12d/1/0
该解释由Archit Garg提供。
这个问题的测验