求一拆分的存储过程,请指点
有表A 字段 a, c,m(m是a,c这个字段对应的总的数)
有表B 字段 a, c,d, f, n(n是a,c,d,f对应的总数)
有表C 字段 a, c,d, f, s(s是a,c,d,f对应的总数)
现在要把表A中作业的一个f的数据写到表B中要求如下:
数据格式 1
A表: a c m
AA CC 50 ---AA,CC,50代表的都是数据
BB CC 20 ---BB,CC,20代表的都是数据
B表:a c d f n ---现在没有数据(等待插入)
C表:a c d f s
AA CC DD1 FF1 10
AA CC DD2 FF2 25
AA CC DD3 FF3 15
BB CC DD1 FF1 10
BB CC DD2 FF2 10
执行的过程是
首先以A表中的a,c两字段位条件比如A.a=AA,A.c=CC得时候取出 A.m=50
然后再C表中以C.a=AA,C.c=CC为条件取出
a c d f s
AA CC DD1 FF1 10
AA CC DD2 FF2 25
AA CC DD3 FF3 15
这些都符合条件
拿取出的A.m=50与从C表中取出的三条数据的C.s从第一条依次进行比较
如果A.m>C.s B.n=C.s (不大于的话参照数据格式2)
第二条一样......
第三条...........
然后把数据写入B表
B表的数据应改为
a c d f n
AA CC DD1 FF1 10
AA CC DD2 FF2 25
AA CC DD3 FF3 15
BB CC DD1 FF1 10
BB CC DD2 FF2 10
-----------------------------------------------
数据格式 2
A表: a c m
AA CC 30 ---AA,CC,50代表的都是数据
BB CC 15 ---BB,CC,20代表的都是数据
B表:a c d f n ---现在没有数据(等待插入)
C表:a c d f s
AA CC DD1 FF1 10
AA CC DD2 FF2 25
AA CC DD3 FF3 15
BB CC DD1 FF1 10
BB CC DD2 FF2 10
然后把数据写入B表
B表的数据应改为
a c d f n
AA CC DD1 FF1 10
AA CC DD2 FF2 20
AA CC DD3 FF3 0
BB CC DD1 FF1 10
BB CC DD2 FF2 5
------解决方案--------------------
SQL code
create table ta(a varchar(2),c varchar(2),m int)
insert into ta select
'AA','CC',30 union select --AA,CC,50代表的都是数据
'BB','CC',15 ---BB,CC,20代表的都是数据
create table tb (a varchar(2),c varchar(2), d varchar(3), f varchar(3),n int) ---现在没有数据(等待插入)
create table tc(a varchar(2),c varchar(2),d varchar(3),f varchar(3),s int)
insert into tc select
'AA','CC','DD1','FF1',10 union select
'AA','CC','DD2','FF2',25 union select
'AA','CC','DD3','FF3',15 union select
'BB','CC','DD1','FF1',10 union select
'BB','CC','DD2','FF2',1