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)所有学生的数据表,发到下面给系里的秘书填了上报.
不知道我叙述清楚了没有...有高手会写这样的存储过程么
把代号的部分都用变量来表示.

解决方案 »

  1.   

    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这个就是结果了,用4个表联合写入JS_CJ表里面添加这样的数据
    生成中文一班(2001),张老师(8001),科目为高等数学(5001)所有学生的数据表,发到下面给系里的秘书填了上报.
    主要确认的字段是 先查询教师表,然后对应的班级代号和科目代号,然后在联合在JS_sj表里添加这样的数据,成绩默认是0,这里不管他,空都可以.反正是让他们填的
      

  2.   

    --创建测试环境
    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_CLcolcode varchar(20))
    insert #JW_TH(JW_THname,JW_THcode,JW_SUBcode,JW_CLcolcode)
    select '张老师','8001','5001','2001' union all
    select '李老师','8002','5002','2001'create table #JW_ST(JW_STname varchar(20),JW_STnum varchar(20),JW_CLcolcode varchar(20))
    insert #JW_ST(JW_STname,JW_STnum,JW_CLcolcode)
    select '张三','2007001001','2001' union all
    select '李四','2007001002','2001' union all
    select '王五','2007001002','2002'--求解过程
    select _st.JW_STnum,_st.JW_STname,0 as point,_su.JW_SUBname,_cl.JW_CLname,_th.JW_THname
    from #JW_ST _st
    join #JW_TH _th on _th.JW_CLcolcode = _st.JW_CLcolcode
    join #JW_CL _cl on _cl.JW_CLcolcode = _th.JW_CLcolcode
    join #JW_SUB _su on _su.JW_SUBcode = _th.JW_SUBcode--删除测试环境
    drop table #JW_CL,#JW_SUB,#JW_TH,#JW_ST/*--测试结果
    JW_STnum             JW_STname            point       JW_SUBname           JW_CLname            JW_THname            
    -------------------- -------------------- ----------- -------------------- -------------------- -------------------- 
    2007001002           李四                   0           大学英语                 中文1班                 李老师
    2007001001           张三                   0           高等数学                 中文1班                 张老师
    2007001002           李四                   0           高等数学                 中文1班                 张老师
    2007001001           张三                   0           大学英语                 中文1班                 李老师(所影响的行数为 4 行)
    */
      

  3.   

    我要的是向JS_CJ 表里写入数据..不是这个意思
      

  4.   

    CN2074() ( ) 信誉:100    Blog  2007-03-01 08:41:37  得分: 0  
     
     
       我要的是向JS_CJ 表里写入数据..不是这个意思
      
     
    -----------
    那就這麼寫Insert JS_CJ 
    Select 
    A.JW_STnum,
    A.JW_STname,
    0 As JW_REScj,
    D.JW_SUBcode,
    C.JW_CLcolcode,
    B.JW_THcode
    From JW_ST A
    Inner Join JW_TH B on B.JW_CLcolcode = A.JW_CLcolcode
    Inner Join JW_CL C on C.JW_CLcolcode = B.JW_CLcolcode
    Inner Join JW_SUB D on D.JW_SUBcode = B.JW_SUBcode
      

  5.   

    如果JS_CJ 中不止這幾列, 就寫出列名。Insert JS_CJ
    (JW_STnum, JW_STname, JW_REScj, JW_SUBcode, JW_CLcolcode, JW_THcode)
    Select 
    A.JW_STnum,
    A.JW_STname,
    0 As JW_REScj,
    D.JW_SUBcode,
    C.JW_CLcolcode,
    B.JW_THcode
    From JW_ST A
    Inner Join JW_TH B on B.JW_CLcolcode = A.JW_CLcolcode
    Inner Join JW_CL C on C.JW_CLcolcode = B.JW_CLcolcode
    Inner Join JW_SUB D on D.JW_SUBcode = B.JW_SUBcode