1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- --2014年之前的版本,在后来版本中由于更改了数据库的存取方式导致 成长套系出问题:
- --现象:
- --订单修改中,成长套系的套系产品中的入册入底基本上看不到,不仅仅入册入底,还有其他的商品也显示不出来。
- --出现问题的影楼:格林儿童专业摄影机构-新城区新华大街20号
- --产生的原因:
- --之前的版本,若有多个成长套系,某些商品(包含入底入册)可以选择"全部"成长套系都包含,dindansp表中growthtxname='全部',表示该商品为所有成长所有;
- --后来的版本,dindansp表中每个商品不再使用growthtxname='全部'这种方式存储,而是一一对应某个成长套系.
- --解决方案:
- --1.将之前包含growthtxname='全部'的dindansp记录删除,重新创建每个成长套系对应的商品记录;
- --2.有些dindansp的记录虽然包含'全部',但是经查询发现该订单的其他的商品套系名称全为空,反映出并不是所有包含'全部'的都是成长套系订单;
- --这部分记录要过滤.
- --解决过程:
- --1.获取出dindansp中成长套系名称为"全部"的商品和订单;
- use db
- select id,spid,name,growthtxname from dindansp where growthtxname = '全部' order by id
- go
- --2.获取这些订单的成长套系数量及名称;
- use db
- select id,spid,name,growthtxname from dindansp where id in(select id from dindansp where growthtxname = '全部') order by id
- go
- --3.将包含'全部'但不包含'第一次'\'第二次'之类的订单更新为空;
- use db
- select id,spid,name,growthtxname from dindansp where id in(select id from dindansp where growthtxname = '全部')
- and growthtxname<>'第一次' and growthtxname<>'第二次'
- and growthtxname<>'第三次' and growthtxname<>'第四次'
- and growthtxname<>'第五次' and growthtxname<>'第六次'
- and growthtxname<>'第七次' and growthtxname<>'第八次'
- and growthtxname<>'第九次' and growthtxname<>'第十次'
- order by id
- go
- --备份.
- select * into dindansp# from dindansp
- go
- /* 将备份回转原表;
- truncate table dindansp
- insert into dindansp select [id],[spid],[shuliang],[kind],[price],[name],[no],[status1],[status2],[status3],[status4]
- ,[date1],[date2],[date3],[date4],[name1],[name2],[name3],[name4],[hqdate],[hqtime],[urgent],[taketime],[no2]
- ,[growthtxname],[status5],[status6],[date5],[date6],[name5],[name6],[ps],[zs],[ren1],[ren2],[hqstatus],[bz]
- from dindansp#
- */
- --更新这些记录,但除去入册和入底的;
- update dindansp set growthtxname=NULL where id in(select id from dindansp where growthtxname = '全部')
- and growthtxname not in('第一次','第二次','第三次','第四次','第五次','第六次','第七次','第八次','第九次','第十次')
- and name not in('入册','入底')
- go
- --若只有入底与入册,同样也需要更新;
- --4.将包含'全部'但不包含'第一次'\'第二次'之类的订单过滤,余下的就是真正的成长套系订单商品记录;
- use db
- select id,spid,name,growthtxname from dindansp where id in(select id from dindansp where growthtxname = '全部') and
- growthtxname in('第一次','第二次','第三次','第四次','第五次','第六次','第七次','第八次','第九次','第十次')
- order by id
- go
- declare @size int --查询数量;
- declare @ord nvarchar(50) --订单号;
- declare @spname nvarchar(50) --商品名;
- declare @gname nvarchar(50) --成长套系名称;
- --,@ord=id,@spname=name,@gname=growthtxname
- select @size=count(id) from dindansp where id in(select id from dindansp where growthtxname = '全部') and
- growthtxname in('第一次','第二次','第三次','第四次','第五次','第六次','第七次','第八次','第九次','第十次')
- while @size > 0
- begin
- select top 1 percent @ord=id,@spname=name,@gname=growthtxname from dindansp where id
- in(select id from dindansp where growthtxname = '全部')
- and growthtxname in('第一次','第二次','第三次','第四次','第五次','第六次','第七次','第八次','第九次','第十次')
- if
- end
- select distinct growthtxname from dindansp where id in(select id from dindansp where growthtxname = '全部') and
- growthtxname in('第一次','第二次','第三次','第四次','第五次','第六次','第七次','第八次','第九次','第十次')
- order by growthtxname
|