比如说有这么个情况:有以下三个表:
得分表:
    试卷号(对应每张卷子得分),各题得分(多个字段,记录各道题目得分)
     1                              98(举例,用一个值)
     2                              80
     3                              88
试卷表:
    试卷号,学号(参加考试的学生),各题题号(多个字段,记录各道题目)
      1      0001 
      2      0002
      3      0001
学生表:
    学号,姓名……
    0001   小红
    0002   小白
每个学生可以参加多次考试,现在想要搜索姓名为XX的学生成绩,sql语句应该怎么写?
想要实现搜索‘小红’,结果为:    98    88 
用嵌套查询的话在where条件里会返回多个值,编译错误!最后一点分了,都发出去了,大家帮帮忙!!!sql嵌套 多值

解决方案 »

  1.   

    select 姓名,[分数]=stuff((select ','+rtrim(各题得分) from 得分表 a join 试卷表 b on a.试卷号=b.试卷号 where b.学号=x.学号 for xml path('')),1,1,'') from 学生表 x where 姓名='小红'
      

  2.   

    select c.得分
    from 学生表 a,试卷表 b,得分表 c where a.学号=b.学号 and b.试卷号=c.试卷号
    and a.姓名='XX'