复杂查询与视图使用,废话不多说直接上代码
step1.sql
USE 订单数据库
GO
SET NOCOUNT ON
/*1.查询*/
/*
(1)查询仓库编号为1002的产品总库存量,显示仓库编号,总库存量;
*/
-- 第一题SQL语句开始 --
select 仓库编号,sum(库存量) as 总库存量 from 产品 group by 仓库编号 having 仓库编号=1002
-- 第一题结束 --
GO
/*
(2)查询提成金额最高的代理商,显示代理商编号、姓名、地址、提成金额;
*/
-- 第二题SQL语句开始 --
select 代理商编号,姓名,地址,提成金额 from 代理商 where 提成金额=(select max(提成金额) from 代理商 )
-- 第二题结束 --
GO
/*
(3)查询编号为300的客户通过的代理商的姓名和地址。
*/
-- 第三题SQL语句开始 --
select 代理商.姓名,代理商.地址 from 客户 join 代理商 on 客户.代理商编号=代理商.代理商编号 where 客户编号='300'
-- 第三题结束 --
GO
/*
(4)查询产品编号为0033、订单编号为55、订购数量等于100的客户编号及其姓名。
*/
-- 第四题SQL语句开始 --
select 客户.客户编号,客户.姓名 from 客户
join 订单 on 订单.客户编号 = 客户.客户编号
join 订货项目 on 订货项目.订单编号 = 订单.订单编号
where 订货项目.产品编号 = '0033' and 订货项目.订购数量=100 and 订货项目.订单编号='555'
-- 第四题结束 --
GO
/*
(5)查询每个客户的订单,显示客户编号、客户名、订单编号及订货日期。
*/
-- 第五题SQL语句开始 --
select 客户.客户编号, 客户.姓名,订单.订单编号,订单.订货日期 from 客户 join 订单 on 客户.客户编号=订单.客户编号
-- 第五题结束 --
GO
/*
(6)查询所有2000年以后(不包括2000年)的订货项目,显示且仅显示订单编号,产品编号,订购数量,订购单价。
*/
-- 第六题SQL语句开始 --
select 订货项目.订单编号,订货项目.产品编号,订货项目.订购数量,订货项目.订购单价 from
订货项目 join 订单 on 订货项目.订单编号=订单.订单编号
where CONVERT(int,year(订单.订货日期)) >2000
-- 第六题结束 --
GO
/*
(7)查询提成金额为100000以上(含100000)的代理商所对应的客户姓名。
*/
-- 第七题SQL语句开始 --
select 客户.姓名 from 客户 join 代理商 on 客户.代理商编号 =代理商.代理商编号 where 代理商.提成金额>=100000
-- 第七题结束 --
GO
/*1.视图*/
/*
(1)建立含有订单编号及该订单的客户编号和代理商编号三个字段的视图,名为订单信息视图。
*/
-- 第一题SQL语句开始 --
create view 订单信息视图 as
select 订单.订单编号,订单.客户编号, 客户.代理商编号
from 订单 join 客户 on 客户.客户编号=订单.客户编号
-- 第一题结束 --
GO
/*
(2)从订单信息视图中,查询订单编号为111的产品信息(包括订单编号、客户编号、代理商编号)
*/
-- 第二题SQL语句开始 --
select * from 订单信息视图 where 订单编号='111'
-- 第二题结束 --
GO
/*
(3)建立一个含有产品编号、产品库存量及产品在订量三个字段的视图,
名为产品信息视图。
注:① 产品在定量指产品已经累计被订购的数量
② group by 子句可以将查询结果按某一列或多列的值进行分组ÿ