产品表 销售计划表
int nchar(10) int int nchar(10) int int
int nchar(10) int int nchar(10) int int
ProductID
产品名 单价
ProductID
客户名 订货数量 销售单价
1 name1 110 2 m 2 250
2 name2 220 1 n 3 110
3 name3 330 3 n 1 300
4 name4 440 4 m 2 400
1. 是否能删除产品表中的 name2 ?请说明理由与过程。
2. 将销售计划表中 m 客户的产品名为 name2 的销售单价更换为产品表中相应的单价
1 name1 110 2 m 2 250
2 name2 220 1 n 3 110
3 name3 330 3 n 1 300
4 name4 440 4 m 2 400
1. 是否能删除产品表中的 name2 ?请说明理由与过程。
2. 将销售计划表中 m 客户的产品名为 name2 的销售单价更换为产品表中相应的单价
3.
求销售计划表中各客户各自的销售总金额的
sql
语句
(有难度)
看到网上有很多直接 update 或者sum 的解答,感觉都不明朗,或者说是感觉完全错误的解答.我自己做了一下.呵呵,不知道我是不是做的复杂了,但我还是比较高兴,还记得SQL语句怎么写的.
回答:
1. 分两种情况:
如果产品名的字段类型设置 为 null, 则可为空,若设置为 not null则不可为空。由于产品名不是 唯一的。
2.
create
procedure Exchange
as
declare
@danjia int;
select
@danjia =(select
产品表
.
单价
from
产品表
inner
join
销售计划表
on
"
产品表
".ProductID = "
销售计划表
".ProductID where "
销售计划表
".
客户名
=
'm'
and "
销售计划表
".ProductID = 2);
begin
update
销售计划表
set
销售单价
=
@danjiawhere ProductID=2;
end
exec
Exchange
drop
proc Exchange
create
view countmoney
as
select
产品表
.
单价
*
销售计划表
.
订货数量
as
"
销售金额
",
产品表
.
productID,
销售计划表
.
客户名
as
客户名
from
产品表
inner
join
销售计划表
on
"
产品表
".ProductID=
销售计划表
.
ProductID;
--
先建立视图,试图中包含销售金额
--
drop
view countmoney
create
procedure coun @customor nchar(10)
as
declare
@summo int;
select
@summo=(select sum(
销售金额
)
from countmoney where
客户名
=
@customor);
print
@summo;
exec
coun @customor='n'
drop
proc coun