产品表 销售计划表
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
本文通过具体实例介绍了如何使用SQL进行数据操作,包括删除特定记录、更新价格及计算每位客户的总销售额等常见任务。
4515

被折叠的 条评论
为什么被折叠?



