内部結合を使用して、より多くのテーブルからデータを選択したい。
これらは私のテーブルです。
Student (studentId, firstName, lastname)
Exam (examId, name, date)
Grade (gradeId, fk_studentId, fk_examId, grade)
生徒がどの試験、学年、日付に参加したかを示す声明を書きたいと思います。日付の後にソートされます。
これが私の声明です。実行されますが、正しく実行していることを確認したいです。
SELECT
student.firstname,
student.lastname,
exam.name,
exam.date,
grade.grade
FROM grade
INNER JOIN student
ON student.studentId = grade.gradeId
INNER JOIN exam
ON exam.examId = grade.gradeId
ORDER BY exam.date
ほぼ正しく..結合を見て、間違ったフィールドを参照しています
SELECT student.firstname,
student.lastname,
exam.name,
exam.date,
grade.grade
FROM grade
INNER JOIN student ON student.studentId = grade.fk_studentId
INNER JOIN exam ON exam.examId = grade.fk_examId
ORDER BY exam.date
正しいステートメントは次のとおりです。
SELECT
student.firstname,
student.lastname,
exam.name,
exam.date,
grade.grade
FROM grade
INNER JOIN student
ON student.studentId = grade.fk_studentId
INNER JOIN exam
ON exam.examId = grade.fk_examId
ORDER BY exam.date
定義された外部キー関係に基づいて、テーブルが他のテーブルを参照します。データを照会済みとして表示する場合は、IDを適切に参照する必要があります。したがって、適切な関係を定義していないIDだけでなく、テーブル内の適切な外部キーをIDに参照する必要があります。
SELECT
student.firstname,
student.lastname,
exam.name,
exam.date,
grade.grade
FROM grade
INNER JOIN student
ON student.studentId = grade.fk_studentId
INNER JOIN exam
ON exam.examId = grade.fk_examId
GROUP BY grade.gradeId
ORDER BY exam.date