2.查询至少供应了3种商品的供应商的ID select Sid, count(cid)商品种数 from stockDetail a ,stock b where a.CGid=b.CGid group by a.CGid ,Sid having count(Cid)>=3
4. 查询在2006年至少已经与2名销售员签订了合同的客户ID
select CUid,count(SAid)签订合同次数 from sale
WHERE year(SAdate)=2006 GROUP BY CUid
having count(SAid)>=2
16
实验四 表连接查询
一、实验目的与要求
1.掌握表连接查询的使用方法 2.掌握子查询的使用方法
3.能使用内连接、左外连接、右外连接以及交叉连接解决相关问题 4.熟悉系统函数的使用
二、实验内容
1.查找每一个供应商供应的商品的名称,要求显示供应商名称和商品名称。 select Sid,Cname
from supplying a ,commodity b where a.Cid=b.Cid
2.使用连接查询查找与姓名为‘李云’的采购员签订采购单的供应商的名称。 select Sname
from stock a ,supplier b,Employee c where a.Sid=b.Sid and a.Eid=c.Eid and Ename='李云'
3.使用关键字IN完成查询,要求查找与姓名为‘李云’的采购员签订采购单的供应商的名称。 select Sname from supplier where Sname in (
select Sname
from stock a ,supplier b,Employee c where a.Sid=b.Sid and a.Eid=c.Eid and Ename='李云'
17
)
4.使用左外连接完成如下查询:要求查找所有采购员签订的采购合同的详细信息。 select a.Eid,CGid,Sid,CGmoney,CGdate
from Employee a left join stock b on a.Eid=b.Eid where Etype=2
5.使用左外连接完成如下查询:查找所有客户购买的商品详细信息,要求显示客户名称, 商品名称,销售数量,商品单价,没有购买商品的客户也要显示。
6.请使用内连接完成如下查询:查找每一个供应商供应的商品的种类,要求显示供应商名称,供应的商品的种类。
7.查找购买了编号为‘A001’的供应商供应的商品的客户名称 select CUname
from supplying b,commodity c,saleDetail d,sale e,customer f where b.Cid=c.Cid and c.Cid=d.Cid and d.SAid=e.SAid and e.CUid=f.CUid and b.Sid='A002'
8.查找销售员‘王良’在2005年签订的销售合同的详细信息。 select c.SAid,Cid,SDnumber,SDprice,SDdiscount from Employee a ,sale b,saleDetail c
where a.Eid=b.Eid and b.SAid=c.SAid and Ename='王良'and year(SAdate)=2005
18
三、自我测试
1.使用右外连接完成如下查询:要求查找所有采购员签订的采购合同的详细信息,没有签订采购单的采购员也要显示
2.查找购买了名称为‘联想集团’的供应商供应的商品的客户名称 select distinct a.Sname,CUname
from supplier a ,supplying b,commodity c,saleDetail d,sale e,customer f where a.Sid=b.Sid and b.Cid=c.Cid and c.Cid=d.Cid and d.SAid=e.SAid and e.CUid=f.CUid and a.Sname='联想集团'
19
实验五 表综合查询使用
一、实验目的与要求
1.能熟练应用SELECT语句及其相关字句
2.能将SELECT与系统函数、IF ELSE、WHILE等语句进行综合应用并解决相关问题
二、实验内容
1.查询所有供应‘鲜橙多’的供应商的最低报价。
select Cname,MIN(price)最低报价 from supplying a,commodity b
where a.Cid=b.Cid and Cname='鲜橙多' group by a.Cid,Cname
2.查找销售员‘王良’在2005年签订的所有销售合同中每一类商品的总金额。 select distinct sum(SAmoney)同一类商品总金额,c.Eid,e.Cname from saleDetail a,sale b,Employee c,commodity e
where a.SAid=b.SAid and c.Eid=b.Eid and e.Cid=a.Cid and Ename='王良'and year(SAdate)=2005
group by a.Cid,c.Eid,e.Cname
3.汇总由姓名为‘刘明’的采购员在2005年采购的‘数码相机’的总金额。 select b.Ename,d.Cname,sum(CGmoney)总金额 from stock a,Employee b,stockDetail c,Commodity d where a.Eid=b.Eid and c.Cid=d.Cid and a.CGid=c.CGid
and year(CGdate)=2005 and Ename='刘明'and Cname='数码相机' group by b.Ename,d.Cname
5. 汇总由姓名为‘刘明’的采购员在2005年采购的各类商品的数量。 select Ename,SDnumber
from Employee a,stockDetail b,stock c
20