日期:2014-05-19  浏览次数:20400 次

非常复杂的的存储过程,高手们来研究这样能写么?
JW_CL   班级信息

JW_CLname   JW_CLcolcode
中文1班           2001
中文2班           2002
英语1班           2003
英语2班           2004
……

JW_SUB   科目信息表

JW_SUBname     JW_SUBcode
高等数学         5001
大学英语         5002
大学体育         5003
……

JW_TH   教师信息表

JW_THname   JW_THcode   JW_SUBcode   JW_CLcolcode
张老师         8001                     5001           2001
李老师         8002                     5002           2001
……

JW_ST   学生信息表

JW_STname   JW_STnum     JW_CLcolcode
张三             2007001001       2001
李四             2007001002       2001
王五             2007001002       2002
……


需要用这几个表向一个表里联合写入数据
JS_CJ   下发成绩表
JW_RESstnum     JW_RESstname   JW_REScj   JW_RESsubcode   JW_RESclcode   JW_RESthcode
2007001001         张三               0(成绩默认)     5001               2001                   8001
2007001002         李四               0                             5001               2001                   8001
2007001002         李四               0                             5002               2001                   8002
2007001001         张三               0                             5002               2001                   8002
……

其实就是用四个表往一个表里写数据
比如:
生成中文一班(2001),张老师(8001),科目为高等数学(5001)所有学生的数据表,发到下面给系里的秘书填了上报.
不知道我叙述清楚了没有...有高手会写这样的存储过程么
把代号的部分都用变量来表示.


------解决方案--------------------
--创建测试环境
create table #JW_CL(JW_CLname varchar(20),JW_CLcolcode varchar(20))
insert #JW_CL(JW_CLname,JW_CLcolcode)
select '中文1班 ', '2001 ' union all
select '中文2班 ', '2002 ' union all
select '英语1班 ', '2003 ' union all
select '英语2班 ', '2004 '

create table #JW_SUB(JW_SUBname varchar(20),JW_SUBcode varchar(20))
insert #JW_SUB(JW_SUBname,JW_SUBcode)
select '高等数学 ', '5001 ' union all
select '大学英语 ', '5002 ' union all
select '大学体育 ', '5003 '

create table #JW_TH(JW_THname varchar(20),JW_THcode varchar(20),JW_SUBcode varchar(20),JW_CLcolc