MSSQL 题目 ,俺觉得挺难, 大家讨论下,解决了按给分
某数据库中有员I   关系E、产品关系P、仓库关系W   和库存关系I,其中:员工关系 
 E(employeeID,name,department)中的属性为:员工编号,姓名,部门:产品关系 
 P(productID,name,model,size,color)中的属性为:产品编号,产品名称,型号,尺 
 寸,颜色:仓库关系W(warehouseID,name,address,employeelD)中的属性为:仓库编号, 
 仓库名称,地址,负责人编号;库存关系I(warehouseID,productID,quantity))中的 
 属性为仓库编号,产品编号和产品数量。   
 c.若需得到在所有仓库中都存在的产品的名称,则对应的查询语句为: 
 SELECT   name   FROM   P 
 WHERE   (50) 
 (SELECT   *   FROM   W 
 WHERE   NOT   EXISTS 
 (SELECT   *   FROM   I 
 WHERE   P.productID   =   I.productID   AND   W.warehouseID   =   Ⅰ.warehouseID)) 
 (50)A.EXISTS   B.NOT   EXISTS   C.IN   D.NOT   IN     
 答案可能是B       
 俺想不通,各位高手解释下!俺也查过书了,但是还是不懂!! 
------解决方案--------------------看lz说的语句   where 后面没有指定具体的列名所以,用in 和 not in 都是不对的,可以把c和d两个答案排除了,然后在看那个子查询 
 SELECT * FROM W 
 WHERE NOT EXISTS 
 (SELECT * FROM I 
 WHERE P.productID = I.productID AND W.warehouseID = Ⅰ.warehouseID)   
 上面的语句得到的是所有仓库中没有的数据,所以要用not exists 不知道lz看不看得懂。 
------解决方案--------------------NOT EXISTS 
 NOT EXISTS 的作用与 EXISTS 相反。如果子查询没有返回行,则满足 NOT EXISTS 中的 WHERE 子句。本示例查找不出版商业书籍的出版商的名称:   
 USE pubs 
 GO 
 SELECT pub_name 
 FROM publishers 
 WHERE NOT EXISTS 
    (SELECT * 
    FROM titles 
    WHERE pub_id = publishers.pub_id 
    AND type =  'business ') 
 ORDER BY pub_name 
 GO   
 下面是结果集:   
 pub_name                                  
 ----------------------------------------  
 Binnet & Hardley                          
 Five Lakes Publishing                     
 GGG&G                                     
 Lucerne Publishing                        
 Ramona Publishers                         
 Scootney Books                              
 (6 row(s) affected)