私の最初のクエリは、3つのテーブルから学生の詳細を引き出します。Student、StudentAddress、StudentNote。
私のクエリでは、ID、名前、住所、メモなどの学生の詳細をリストし、コースに登録した最も早い日付を見つける必要があります。
これを行うための集計クエリを作成しました。
SELECT STU_Name, MIN(ENR_StartDate)
FROM Student
INNER JOIN Enrolment
ON Student.STU_Student_ID = Enrolment.ENR_Student_ID
GROUP BY STU_Name
これは、学生の詳細を引き出す私の主な質問です。
SELECT STU_Name, ADD_Addr_Line_1, ADD_Addr_Line_2, ADD_Addr_Line_3, ADD_Postcode, NTE_Note, ENR_StartDate
FROM Student
INNER JOIN StudentAddress
ON Student.STU_Student_ID = StudentAddress.ADD_Student_ID
INNER JOIN StudentNote
ON Student.STU_Student_ID = StudentNote.NTE_Student_ID
INNER JOIN Enrolment
ON Student.STU_Student_ID = Enrolment.ENR_Student_ID
これらのクエリをリンクして、結果セットが行の生徒ごとの最も早い開始日を教えてくれるようにします。
学生に望ましい出力
row0: student1id, student1name, student1address, student1note1, student1startdate
row1: student1id, student1name, student1address, student1note2, student1startdate
これにより、生徒は複数のメモを持つことができますが、開始開始は常に生徒に対して同じとして計算されます。
SQLフィドルでテストスキーマを構築しました。
http://sqlfiddle.com/#!2/cecea/4
助けてくれてありがとう。