输出MySQL结果

输出MySQL结果,mysql,Mysql,所以我有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 stud

所以我有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就可以做到这一点吗?

如果不硬编码考试数量,这是不可能的。你可以让学生参加3次不同的考试,确保第一个id<第二个id<第三个id可以阻止双打的发生


如果你需要一个额外的考试,或者某人只有两个考试,你需要处理它。如果不对3个(或更多/更少)联接进行硬编码,这种透视是不可能的。好吧,SQL不允许您这样做,所以最好在应用程序中执行这种处理


如果你真的想在MySQL中实现这一点,你可以使用比普通SQL略为强大的SQL(例如,你可以使用a)。

我认为这是可能的。我可以问一下,这是否是你拥有的完整的表结构吗?我认为你在课程设置和分数表中都缺少studentid。我认为在
分数表中有studentid,没有理由在
课程设置表中包含它。是的,我相信这是正确的。很抱歉。我还建议您删除“type”字段并将其放在“scores”表中。