0

私は次のテーブルを持っています:

表: 教師:

教師
ID 教師名

表: 学生:

学生
ID 学生名 教師ID
顧問
ID

したがって、通常、INNER JOIN を使用して教師の名前を付けて、生徒ごとに 1 つの行を取得できることがわかっています。

ただし、この場合、アドバイザーとタッチャーは同じ教師テーブルから来ています。では、どうすれば教師のテーブルに 2 回参加できますか?

これが明確であることを願っています

ありがとう!

4

3 に答える 3

4

これは、(a) 教師または (b) アドバイザーのどちらも存在しなくても、生徒のアルファベット順で、教師とアドバイザーの名前があれば生徒をリストします。これらの名前が存在する場所のみが必要な場合は、それぞれの結合を INNER 結合に変更します。

SELECT s.studentname as [Student], t.teachername as [Teacher], a.teachername as [Advisor]
FROM Students s 
LEFT JOIN Teachers t ON s.TeacherID = t.TeacherID
LEFT JOIN Teachers a ON s.AdvisorID = a.TeacherID
ORDER BY 1, 2
于 2013-09-10T23:21:37.330 に答える
2

同じテーブルに複数回参加できます。結合ごとに異なるエイリアスを指定し、フィールドに十分に説明的な名前を付けてください。リンクがない可能性がある場合は左結合を使用しますが、生徒に常に教師とアドバイザーの両方がいる場合は、直線結合で問題ありません。

このようなもの:

select s.studentname student
     , t.teachername teacher
     , a.teachername advisor
from students s
join teacher t
  on t.teacherID = s.teacherID
join teacher a
  on a.teacherID = s.teacherID
于 2013-09-10T23:27:11.153 に答える
1

次のようなことを試してみませんか。私がSQLをやってからしばらく経っているので、これはうまくいかないかもしれません。

SELECT s.studentName AS Student, t.teacherName AS Teacher, a.teacherName AS Advisor 
FROM teachers t, teachers a, students s 
WHERE t.teacherID = s.teacherID AND a.teacherID = s.advisorID
于 2013-09-10T23:21:46.050 に答える