日期:2014-05-17 浏览次数:20550 次
请耐心看哦,大牛们看应该不难:
有三个表A和表B,C
表A(订单主表)
A01[订单编号]
-------------
m01
m02
...
表B(订单明细表订单号和产品编号是关键字)
B01[订单编号] B02[产品编号] B03[规格] B04[规格编号]
------------------------------------------------------
m01 p01 15*15
m01 p02 16*16
m01 p03 20*20
表C(规格表,专放产品)
C01[规格编号,自增长] C03[规格] C02[产品编号]
-------------------------------------------
G01 15*15 p01
G02 16*16 p02
简要说一下需求:
需要将下面表C中的规格编号填到订单表A的规格B04字段,存储过程规则是传入一个订单编号A01为参数,然后遍历表B的每一个产品的规格和表C比对,如果发现规格一样的,比如15*15,16*16,则将规格编号G01和G02分别填入到表B的B04字段,如果没有则将新规格和产品编号增加到规格表C中,规格编号自动增长,为了方便写存储过程,这里用一个变量X代替自动获得的自动编号,然后B04字段就更新为X即可。比如20*20这个规格。
表B最终效果如下:
B01[订单编号] B02[产品编号] B03[规格] B04[规格编号]
------------------------------------------------------
m01 p01 15*15 G01
m01 p02 16*16 G02
m01 p03 20*20 G03
...
此时表C为:
C01[规格编号,自增长] C03[规格] C02[产品编号]
-------------------------------------------
G01 15*15 p01
G02 16*16 p02
G03 20*20 p03
存储过程是这样的一个订单号作为参数的:
storeP(@A01 nvarchar(20))
..
..
不知道大家看明白吗,写得有点流水账,呵呵 在线等,有疑问我随时回复。
--TableA
if OBJECT_ID('TableA','u') is not null
drop table TableA
create table TableA
(
A01 nvarchar(20)
)
go
insert into TableA
select 'm01' union all
select 'm02'
--TableB
if OBJECT_ID('TableB','u') is not null
drop table TableB
create table TableB
(
B01 nvarchar(20),
B02 nvarchar(20),
B03 nvarchar(20),
B04 nvarchar(20)
)
go
insert into TableB
select 'm01','p01','15*15',null union all
select 'm01','p02','16*16',null union a