目的表名作为变量,通过单项ID找到比赛结果评分类型+成绩表取得
然后用动态SQL语句添加

解决方案 »

  1.   

    jianli2004的意思是将成绩表的表名放在体育单项比赛表的比赛结果评分类型字段中
      

  2.   

    类似这样
    select * from 体育比赛单项表 d join 体育比赛成绩表 c on d.单项ID=c.单项ID join 时间型成绩表 s on c.成绩ID=s.成绩ID where 比赛结果评分类型='时间型'
      

  3.   

    --下面是处理方法示例--测试的表
    create table 体育比赛单项表(单项ID varchar(3),人员性别 varchar(4),单项名称 varchar(20),比赛结果评分类型 varchar(10))
    insert into 体育比赛单项表
    select '001','男子','100m短跑','时间型'
    union all select '002','女子','乒乓球','回合比分型'create table 体育比赛成绩表(成绩ID varchar(3),国家ID varchar(3),个人姓名 varchar(10),单项ID varchar(3))
    --insert into 体育比赛成绩表
    --select '023','CNH','王五','001'
    --union all select '024','USA','史密斯','002'create table 时间型成绩表(成绩ID varchar(3),用时 varchar(10))
    --insert into 时间型成绩表
    --select '023','10s'create table 回合比分型成绩表(成绩ID varchar(3),回合1得分 int,回合2得分 int,回合3得分 int)
    --insert into 回合比分型成绩表
    --select '024',11,10,7
    go--添加成绩的存储过程
    create proc p_savedata
    @成绩ID varchar(3),
    @国家ID varchar(3),
    @个人姓名 varchar(10),
    @单项ID varchar(3),
    @成绩列表 varchar(8000) --对于时间型成绩,直接传递,对于回合型,各成绩用,分隔
    as
    declare @s varchar(8000)--根据单项ID类型生成数据插入语句
    select @s='insert into ['+比赛结果评分类型+'成绩表] values('''+@成绩ID
    +''','''+replace(@成绩列表,',',''',''')+''')'
    from 体育比赛单项表 where 单项ID=@单项ID--插入数据到比赛成绩表
    insert into 体育比赛成绩表(成绩ID,国家ID,个人姓名,单项ID)
    values(@成绩ID,@国家ID,@个人姓名,@单项ID)
    exec(@s)
    go--调用示例
    exec p_savedata '023','CNH','王五','001','10s'
    exec p_savedata '024','USA','史密斯','002','11,10,7'
    go--显示处理结果
    select * from 体育比赛成绩表
    select * from 时间型成绩表
    select * from 回合比分型成绩表
    go--删除测试
    drop table 体育比赛单项表,体育比赛成绩表,时间型成绩表,回合比分型成绩表
    drop proc p_savedata
      

  4.   

    老邹,这里给你的分不多,其余的在下面给你吧。http://expert.csdn.net/Expert/topic/2657/2657410.xml?temp=.6499292