求问计算机四级数据库工程师2010.9月试卷填空题第八题

问题描述:

求问计算机四级数据库工程师2010.9月试卷填空题第八题
  (8)设有商品表(商品号,商品名,单价)和销售表(商品号,销售时间,销售数量).
  现要查询单价高于100元的全部商品的销售总次数和总数量,包括没有被卖出过的商品(没有被卖出过的商品的销售总次数和总数量置为0).请补全如下语句:
  SELECT商品表.商品号,销售总次数=【 】,
  销售总数量=SUM(销售数量)
  FROM商品表【 】销售表
  0N商品表.商品号=销售表.商品号
  WHERE单价>100
  GROUP BY商品表.商品号
答案第一空:COUNT(销售数量) 第二空:LEFT OUTER JOIN
第一空我懂
但是第二空为什么要用left outer join?直接用join不是也能表示连接么?
1个回答 分类:综合 2014-12-05

问题解答:

我来补答
左连接A LEFT OUTER JOIN B的意思是对A表全表扫描,A商品表在B销售表中没有商品号对应的商品也可以查询出,对应的销售时间和数据可以用空表示,这样就把没有被卖出过的商品查询出了.A join B只能查询出卖出过的商品,没有卖出的在B中没有数据,所以就查询不出没有卖出的商品.你可以研究下左连接、右连接.
Persons" 表:
Id_P
LastName
FirstName
Address
City
1
Adams
John
Oxford Street
London
2
Bush
George
Fifth Avenue
New York
3
Carter
Thomas
Changan Street
Beijing
"Orders" 表:
Id_O
OrderNo
Id_P
1
77895
3
2
44678
3
3
22456
1
4
24562
1
5
34764
65
左连接(LEFT JOIN)实例
现在,我们希望列出所有的人,以及他们的定购 - 如果有的话.
您可以使用下面的 SELECT 语句:
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
LEFT JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
结果集:
LastName
FirstName
OrderNo
Adams
John
22456
Adams
John
24562
Carter
Thomas
77895
Carter
Thomas
44678
Bush
George

LEFT JOIN 关键字会从左表 (Persons) 那里返回所有的行,即使在右表 (Orders) 中没有匹配的行.
 
 
展开全文阅读
剩余:2000
上一页:第9题老师
下一页:jst