如何在MS SQL中为具有相同数据的两列编写ms sql代码

时间:2012-05-10 16:31:32

标签: mysql ms-access-2010 django-mssql

这里有两张桌子。

Table1
SchoolID   Teacher_name   comm_yr
01          John            1990
02          Heley           1995
03         George          1994
04          Chris           1998
05          Mary            1993

Table2
School_ID   Student_name
01        Heley
02        Chris
03        Chris
04        Mary
05        Heley

我想列出每个学生作为学生所做的一年以及每个学生作为老师所做的一年。

    SELECT Teacher_name, comm_yr As Teacher_comm_yr, comm_yr As Student_comm_yr
FROM Table1 INNER JOIN Table2
WHERE comm_yr (SELECT comm_yr As Teacher_comm_yr From Table1
Where teacher_name=student_name);

表格显示

Teacher_name    Teacher_comm_yr  Student_comm_yr
John                   1990 1990
Heley                 1995  1995
George                 1994 1994
Chris                  1998 1998
Mary                    1993    1993

但我想要的是

Teacher_name    Teacher_comm_yr Student_comm_yr
John               1990 
Heley               1995     1990
George              1994    
Chris               1998      1995
Chris               1998     1994
Mary                1993     1998

但我只能在同一年执行 能帮忙吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

一些注释。

SELECT 
  t1.Teacher_name, 
  t2.Student_name, 
  t1.comm_yr AS Teacher_comm_yr, 
  t1.comm_yr AS Student_comm_yr
FROM Table1 AS t1 
LEFT JOIN Table2 AS t2 
ON t2.student_name = t1.teacher_name;

根据你的数据,我不明白克里斯1995年的所在地。

那怎么样:

SELECT t.SchoolID,
       t.Teacher_name,
       t.comm_yr,
       q.SchoolID,
       q.Teacher_name,
       q.Student_name,
       q.comm_yr
FROM   table11 t
       LEFT JOIN (SELECT a.SchoolID,
                         a.Teacher_name,
                         b.Student_name,
                         a.comm_yr
                  FROM   table11 AS a
                         INNER JOIN table22 AS b
                           ON a.SchoolID = b.School_ID) AS q
         ON t.Teacher_name = q.Student_name; 

我已经包含了比必要更多的字段(列)来测试这个想法。