--记录每个班级中每个学生的每个课程的分数
create table T1(classId int,  --班级ID
studentId int, ---学生ID
CourseId int,   ---课程ID
score int           ---课程得分
);
---记录每个班级有哪些课程,且课程的权重是多少
create table T2(classId int,   ---班级ID
CourseId int,   ----课程ID
power int       ----课程权重  
);--比如说现在有一下信息
T1
班级   学生    课程     分数   权重
1 1 1 160 1
1 1 2 113 2
1 1 3 159 3
1 2 1 121 1
1 2 2 164 2
1 2 3 160 3
2 1 3 81 1
T2 
       班级    课程    权重
1 1 1
1 2 2
1 3 3
1 4 4
2 2 1
2 3 1
2 4 1现在我想使用外连接,得到结果:
班级   学生    课程     分数   权重
1 1 1 160 1
1 1 2 113 2
1 1 3 159 3
1       1       4       Null    4
1 2 1 121 1
1 2 2 164 2
1 2 3 160 3
1       2       4       Null    4
:
:

解决方案 »

  1.   


    select a.classId,b.studentId,a.CourseId,b.score,a.[power]
    from t2 a left join t1 b on a.classId = b.classId and a.CourseId = b.CourseId
      

  2.   

    结果:
    班级   学生    课程     分数    权重
    1 NULL NULL NULL 4
    1 1 1 160 1
    1 1 2 113 2
    1 1 3 159 3
    1 2 1 121 1
    1 2 2 164 2
    1 2 3 160 3
    2 NULL NULL NULL 1
    2 NULL NULL NULL 1
    2 1 3 81 1
    效果没出来呢……
      

  3.   

    我看懂了就是写不出来!~。。
    每个班级有每个班级的课程,每个班级又有每个班级的学生,
    楼主想让每个学生对应该班级所有的课程,没有值的为null
    根据楼主的数据和结果
    1班有4门课(1234)2个学生(12),
    那就是1234对应1的数据和1234对应2的数据。