0

所以我有3张桌子:

student
-studentid
-studentname

course_offerings
-course_offeringid
-course
-type

scores
-student_studentid
-course_offering_course_offeringid
-score

当我进行查询时:

SELECT studentid, studentname, course, type, score
FROM scores
INNER JOIN student ON scores.student_studentid = student.studentid
INNER JOIN course_offering ON scores.course_offering_course_offeringid = course_offering.course_offeringid

我得到类似的输出:

studentid   studentname     course  type    score
123345      Doe, John       123     Exam 1  100
123345      Doe, John       123     Exam 2  95
123345      Doe, John       123     Exam 3  75
123345      Doe, John       123     Final   93
543211      Doe, Jane       123     Exam 1  70
543211      Doe, Jane       123     Exam 2  91
543211      Doe, Jane       123     Exam 3  99
543211      Doe, Jane       123     Final   43
.
.
.

我想要的是输出是:

studentid   studentname     course  Exam 1  Exam 2  Exam 3  Final
123345      Doe, John       123     100     95       75     93
543211      Doe, Jane       123     70      91      99      43

这可能只用 MySQL 吗?

4

2 回答 2

0

并非没有硬编码考试的数量。您可以带学生参加 3 次不同的考试,确保first id < secondid < thirdid 不会发生双打。

如果您需要额外的考试,或者某人只有 2 次考试,则需要处理它。如果不对 3 个(或更多/更少)连接进行硬编码,就不可能实现这种枢轴

于 2013-05-30T13:21:08.517 回答
0

好吧,SQL 不会让你这样做,所以最好只在你的应用程序中执行这个处理。

如果您真的想在 MySQL 中执行此操作,您可以使用比普通 SQL 稍微强大的存储例程(例如,您可以使用FOR-loop)。

于 2013-05-30T13:25:07.670 回答