当前位置:文档之家› 数据库实验多表查询参考答案(DOC)

数据库实验多表查询参考答案(DOC)

SELECTemployeeName,casesex
when'F'then'女'
when'M'then'男'endsex,
orderDate,quantity,quantity*price金额
FROMEmployee a,OrderMaster b,OrderDetail c
WHEREa.employeeNo=b.salerNoANDb.orderNo=c.orderNo
SELECTa.productNo,productName,quantity,price
FROMProduct a,OrderDetail b
WHEREa.productNo=b.productNoANDprice>400
ORDERBYproductName
(10)分别使用左外连接、右外连接、完整外部连接查询单价高于400元的商品编号、商品名称、订货数量和订货单价,并分析比较检索的结果。
FROMEmployee)
(4)查找有销售记录的客户编号、名称和订单总额。
selecta.customerNo,a.customerName,b.orderNo,sum(quantity*price)
fromCustomer a,OrderMaster b,OrderDetail c
wherea.customerNo=b.customerNoandb.orderNo=c.orderNo
FromOrderDetailAsbleftJOINProductAsa
ON(a.productNo=b.productNo)ice>400
•这两个左外连接,第一个是先去掉单价小于等于400的商品,然后执行左外连接,该查询的结果表明商品表中所有单价高于400的商品全部被订购了
第二个左外连接是将那些单价小于等于400的商品用空值替代
wherea.employeeNo<b.employeeNo--1.本人不跟本人连接,2.不同的两人只连接一次
and a.hireDate=b.hireDate
(2)查找与“陈诗杰”在同一个单位工作的员工姓名、性别、部门和职务。
Selectb.employeeName,b.sex,b.headShip,b.department
(12)查找每个员工的销售记录,要求显示销售员的编号、姓名、性别、商品名称、数量、单价、金额和销售日期,其中性别使用“男”和“女”表示,日期使用“yyyy-mm-dd”格式显示。
SELECTsalerNo,employeeName,CASEsexWHEN'M'THEN'男'
WHEN'F'THEN'女'
orderDate,quantity,quantity*price total
FROMEmployee a,OrderMaster b,OrderDetail c,Product d
WHEREa.employeeNo=b.salerNoANDb.orderNo=c.orderNoAND
c.productNo=d.productNoANDproductName='16MDRAM'
左外连接命令:
SELECTa.productNo,productName,quantity,price
FROMProduct aLEFTOUTERJOINOrderDetail b
ONa.productNo=b.productNo
WHEREprice>400
Selecta.productNo,a.productName,b.quantity,b.price
SELECT*
FROMOrderMaster
WHEREorderSum>any
(SELECTorderSum
FROMOrderMaster
WHEREsalerNo='E2005002'ANDorderDate='20080109')
(9)查询单价高于400元的商品编号、商品名称、订货数量和订货单价。
SELECTa.customerNo,customerName,
convert(char(10),orderDate,120)orderDate,orderSum
FROMCustomer aLEFTOUTERJOINOrderMaster bON
a.customerNo=b.customerNo
ORDERBYa.customerNo,orderSumdesc
GROUPBYproductNo)b
ONa.productNo=b.productNo
WHEREprice>400
Selecta.productNo,a.productName,b.quantity,b.price
FromOrderDetailAsbfullJOINProductAsa
ON(a.productNo=b.productNo)andprice>400
FROMEmployee a,OrderMaster b,OrderDetail c
WHEREa.employeeNo=b.salerNoANDb.orderNo=c.orderNo
ANDc.ProductNoIN(
SELECTProductNo
FROMProduct
WHEREProductName='32M DRAM')
END性别,
productName,quantity,price,orderSum,
convert(char(10),orderDate,120)orderDate
FROMEmployee a,OrderMaster b,OrderDetail c,Product d
WHEREa.employeeNo=b.salerNoANDb.orderNo=c.orderNo
ANDc.productNo=d.productNo
(13)查找16MDRAM的销售情况,要求显示相应的销售员的姓名、性别,销售日期、销售数量和金额,其中性别用“男”、“女”表示。
SELECTemployeeName,CASEsex
WHEN'M'THEN'男'
WHEN'F'THEN'女'
ENDsex,
SELECTa.productNo商品编号,productName商品名称,
qtySum总数量,totalSum总金额
FROMProduct a,
(SELECTproductNo,sum(quantity)qtySum,
sum(quantity*price)totalSum
FROMOrderDetail
ANDc.ProductNoIN(
SELECTProductNo
FROMProduct
WHEREProductName='32MDRAM')
参考解答:
SELECTemployeeName,casesex
when'F'then'女'
when'M'then'男'endsex,
orderDate,quantity,quantity*price金额
数据库原理实验教材实验答案
实验二
(1)找出同一天进入公司服务的员工。
Selecta.employeeNo,a.employeeName,a.hireDate,
b.employeeNo,b.employeeName
fromEmployee a,Employeeasb
wherea.employeeNo!=b.employeeNoand
(7)查询OrderMaster表中订单金额最高的订单号及订单金额。
selectorderNo,orderSum
fromOrderMaster
whereorderSum=(selectmax(orderSum)
fromOrderMaster)
(8)在订单主表中查询订单金额大于“E2005002业务员在2008-1-9这天所接的任一张订单的金额”的所有订单信息。
a.employeeName>b.employeeNameand(a.hireDate=b.hireDate)
参考解答:
SELECTDISTINCTa.hireDate,a.employeeNo,a.employeeName--消除重复的元组
FROMemployee a, employee b
WHEREa.employeeNo!=b.employeeNo--本人不跟本人连接
(14)找出公司男业务员所接且订单金额超过2000元的订单号及订单金额。
SELECTorderNo,orderSum
FROM(SELECTorderNo,orderSum
FROMOrderMaster a,Employee b
WHEREa.salerNo=b.employeeNoANDb.sex='M')c
WHEREordersum>2000
或:
SELECTorderNo,orderSum
FROMOrderMaster a,Employee b
WHEREa.salerNo=b.employeeNoANDb.sex='M'andordersum>2000
(15)查询每种商品的总销售数量及总销售金额,要求显示出商品编号、商品名称、总数量及总金额,并按商品号从小到大排列。
AND a.hireDate=b.hireDate
ORDER BYa.hireDate,a.employeeNo
selecta.hireDate,a.employeeNo,a.employeeName,b.employeeNo,b.employeeName
相关主题