数据库实验多表查询参考答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
from OrderMaster
where orderSum=(select max(orderSum)
from OrderMaster)
(8)在订单主表中查询订单金额大于“E2005002业务员在2008-1-9这天所接的任一张
订单的金额”的所有订单信息。
SELECT*
FROM OrderMaster
WHERE orderSum>any
(SELECT orderSum
FROM OrderMaster
WHERE salerNo='E2005002'AND orderDate='20080109')
(9)查询单价高于400元的商品编号、商品名称、订货数量和订货单价。
SELECT a.productNo,productName,quantity,price
FROM Product a, OrderDetail b
WHERE a.productNo=b.productNo AND price>400
ORDER BY productName
(10)分别使用左外连接、右外连接、完整外部连接查询单价高于400元的商品编号、商
品名称、订货数量和订货单价,并分析比较检索的结果。
左外连接命令:
SELECT a.productNo,productName,quantity,price
FROM Product a LEFT OUTER JOIN OrderDetail b
ON a.productNo=b.productNo
WHERE price>400
Select a.productNo , a.productName , b.quantity,b.price
From OrderDetail As b left JOIN Product As a
ON(a.productNo=b.productNo)and price>400
•这两个左外连接,第一个是先去掉单价小于等于400的商品,然后执行左外连接,该查询的结果表明商品表中所有单价高于400的商品全部被订购了
第二个左外连接是将那些单价小于等于400的商品用空值替代
右外连接命令:
SELECT a.productNo,productName,quantity,price
FROM Product a RIGHT OUTER JOIN OrderDetail b
ON a.productNo=b.productNo
WHERE price>400
Select a.productNo , a.productName , b.quantity,b.price
From OrderDetail As b RIGHT JOIN Product As a
ON(a.productNo=b.productNo)and price>400
全连接命令:
SELECT a.productNo,productName,quantity,price
FROM Product a FULL OUTER JOIN OrderDetail b
ON a.productNo=b.productNo
WHERE price>400
Select a.productNo , a.productName , b.quantity,b.price From OrderDetail As b full JOIN Product As a ON(a.productNo=b.productNo)and price>400
右外连接和全外连接的分析同左外连接
从上述结果可知:若表a和表b做外连接,且b表是外码表,则a和b表左外连接可能会出现空值,但是右连接一定不会出现空值,全外连接与左外连接一样的结果。
(11)使用左外连接查找每个客户的客户编号、名称、订货日期、订单金额,其中订货日
期不要显示时间,日期格式为“yyyy-mm-dd”,按客户编号排序,同一客户再按订单金额降序排序输出。
SELECT a.customerNo,customerName,
convert(char(10),orderDate,120) orderDate,orderSum FROM Customer a LEFT OUTER JOIN OrderMaster b ON
a.customerNo=
b.customerNo
ORDER BY a.customerNo,orderSum desc。