已知一个关系数据库的模式如下:market(mno,mname,city)、item(ino,iname, type,color)、sales(mno,ino,price),其中,market表示商场,它的各属性依次为商场号、商场名和所在城市;item表示

admin2010-01-23  43

问题 已知一个关系数据库的模式如下:market(mno,mname,city)、item(ino,iname, type,color)、sales(mno,ino,price),其中,market表示商场,它的各属性依次为商场号、商场名和所在城市;item表示商品,它的各属性依次为商品号、商品名、商品类别和颜色; sales表示销售,它的各属性依次为商场号、商品号和售价。
   查询长沙每个商场都销售,且售价均超过3000元的商品的商品号和商品名的SQL语句为:
   SELECT ino, iname FROM item
       WHERE  (24)  
          (SELECT* FROM market
          WHERE  (25)   AND NOT EXISTS
             (SELECT*FROM sales
             WHERE  (26)   AND price>3000))
   查询在不同的商场中最高售价和最低售价之差超过100元的商品的商品号、其最高售价和最低售价的SQL语句为:
   SELECT ino, MAX(price), MIN(price)FROM sales
         (27)  HAVING MAX(price)-MIN(price)>100

选项 A、GROUP BY mno
B、GROUP BY ino
C、GROUP BY price
D、GROUP BY MAX(price)

答案B

解析 此题牵涉到select的多层嵌套查询。难度较高。有条件的读者可以在机器上调试此语句,这样有助于理解。第一问是查询长沙每个商场都销售,且售价均超过3000元的商品的商品号和商品名,其语义等价于——不存在这样的商场X:X所在城市为长沙,且X中不存在售价大于3000的在长沙各商场均有售的商品。言外之意就是,对于长沙各个商场而言,都有这样的商品——该商品在长沙各商场均有售且售价超过3000元。因此第 (24)空填NOT EXISTS,第(25)空填city=’长沙’。第(26)空显然要填:item. ino=sales. ino AND market. mno=sales.mno,用于连接三个表。接下来我们看第(27)空,这一空要求查询不同商场中最高售价和最低售价之差超过 100元的商品的商品号,这需要对记录进行分组。分组时应以商品号来进行,因为若按商品号分组,则此商品在各个商场的售价都在一个组内,用MAX和MIN这两个函数,可以求得此商品的最高售价和最低售价,所以应选B。
转载请注明原文地址:https://jikaoti.com/ti/41a7FFFM
0

随机试题
最新回复(0)