0
以下のように、結合とサブクエリを含むSQLクエリを更新して、のマークを得ることができます。ExamID = 1とExamID = 3も最終結果セットに含まれますか? CTE
はあなたの両方の試験をしたこれらの学生を与えるこのクエリは、ExamID 1とExamID 3に合格した生徒の詳細を出力します。各試験で得られたマークも表示します。どうやって?
WITH BothCTE
(
SELECT stm.StudentID
FROM StudentMarks stm
INNER JOIN Exam ex ON stm.ExamID=ex.ExamID
WHERE stm.Mark >= ex.MinMarkForPass AND stm.ExamID IN(1, 3)
GROUP BY StudentID
HAVING(DISTINCT ExamID) >= 2
)
SELECT st.StudentID, st.Name, stm.Mark
FROM Students st
INNER JOIN StudentMarks stm ON st.StudentID = stm.StudentID
WHERE st.StudentID IN(SELECT StudentID FROM BothCTE);
、その後、あなたが取得するマークテーブルで、これらの結果を結合することができます。
SELECT DISTINCT st.StudentID,st.Name
FROM Students st
INNER JOIN StudentMarks stm ON st.StudentID=stm.StudentID
WHERE st.StudentID IN(SELECT stm.StudentID
FROM StudentMarks stm
INNER JOIN Exam ex ON stm.ExamID=ex.ExamID
WHERE stm.Mark>=ex.MinMarkForPass AND stm.ExamID=1
INTERSECT
SELECT stm.StudentID
FROM StudentMarks stm
INNER JOIN Exam ex ON stm.ExamID=ex.ExamID
WHERE stm.Mark >= ex.MinMarkForPass AND stm.ExamID=3)
***両方の試験を受験する生徒を望んでいますか***? –
両方の試験に合格した生徒は、上記の質問によって示されます。私は両方の試験にそれぞれ得たマークを示したい。 –