2012-05-10 8 views
0

ここには2つのテーブルがあります。MS SQLで同じデータを持つ2列のms SQLコードを書き込む方法

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 

あるしかし、私は唯一の

おかげ.. はあなたが助けてくださいすることができ、同じ年に実行することができています!

+0

希望の出力サンプルを入力してください。 – RedFilter

+0

エラーが発生しました。私はそれを実行することもできません – user1355061

+0

上記の2つの基本テーブルの意味は何ですか?あなたが見たいと思っている出力は何ですか?クエリを実行する必要はありません..あなた自身でビルドしてください。:/ – Baz1nga

答えて

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年のChrisの所在はわかりません。

それでは、どの程度:

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; 

私はアイデアをテストするために、必要以上のフィールド(列)が含まれています。

+0

ChrisはHeleyの学生だった。t1 – user1355061

+0

助けてくれてありがとう しかし、最初のテーブルのように表示されている。すべての年は同じです。私は2番目のようなテーブルをしたい。 – user1355061

+0

さて、私はあなたが望むものを見ていると思う。 – Fionnuala

関連する問題