0

私は SQL の初心者ですが、データベースとやり取りする必要がある Java プログラム用の SQL ステートメントをいくつか書く必要があります。私たちの Java の教科書では、非常に基本的な SQL コマンドしか扱っていません。(私の基準では) より高度なコマンドを機能させるのに苦労しています。

状況は次のとおりです。

データベースには 5 つのテーブルがあります。

Teacher: TeacherID (PK), LastName
Class: ClassID (PK), Description
Room: Building, Room Number, PK is the combo of those two
TeachingAssignments: TeacherID(FK), ClassID(FK)
ClassRoomAssignments: ClassID(FK), Building, Room Number(combo is FK)

LastName, ClassID, and Building完全に割り当てられている教師、クラス、および部屋のみを提供する必要があります。つまり、クラスに教師と部屋の割り当ての両方がある場合、そのクラスの ID、割り当てられた教師の姓、および割り当てられた建物を指定する必要があります。

どのように進めればよいかほとんどわかりません。

次のようなステートメントで遊んでいますが、うまくいきません。

SELECT Teacher.LastName, Class.ClassID, Room.Building 
FROM Teacher, Class, Room, TeachingAssignments, ClassRoomAssignments 
WHERE Teacher.TeacherID = TeachingAssignments.TeacherID 
    AND Room.Building = ClassRoomAssignments.Building
    AND Class.ClassID = TeachingAssignments.ClassID
    AND Class.ClassID = ClassRoomAssignments.ClassID

誰でも助けることができますか?ありがとう!

4

1 に答える 1

1

問題は、テーブルにそれぞれの結合を追加する必要があることです。

代わりに:

SELECT Teacher.LastName, Class.ClassID, Room.Building 
FROM Teacher, Class, Room, TeachingAssignments, ClassRoomAssignments 
WHERE Teacher.TeacherID = TeachingAssignments.TeacherID 
AND Room.Building = ClassRoomAssignments.Building 
AND Class.ClassID = TeachingAssignments.ClassID 
AND Class.ClassID = ClassRoomAssignments.ClassID

あなたはそのようなものが必要です

SELECT Teacher.LastName, Class.ClassID, Room.Building 
FROM 
Teacher INNER JOIN TeachingAssignments
  ON Teacher.TeacherID = TeachingAssignments.TeacherID 
INNER JOIN Class
  ON Class.ClassID = TeachingAssignments.ClassID
INNER JOIN ClassRoomAssignments
  ON Class.ClassID = ClassRoomAssignments.ClassID
INNER JOIN Room
  ON Room.Building = ClassRoomAssignments.Building

ご覧のとおり、すべての INNER Join の後に、結合される要素の設計を担当するそれぞれの ON 句が続きます。

于 2013-02-18T00:52:36.547 に答える