37

内部結合でより多くのテーブルからデータを選択したい。

これらは私のテーブルです。

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
4

4 に答える 4

72

ほぼ正しく..結合を見てください。間違ったフィールドを参照しています

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
于 2013-04-15T10:57:58.947 に答える
16

正しいステートメントは次のとおりです。

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 をテーブル内の適切な外部キーに参照する必要があります。

于 2013-04-15T10:56:55.553 に答える
3
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
于 2013-04-15T11:02:07.320 に答える