所以我有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吗?
答案 0 :(得分:0)
不是没有硬编码考试的数量。您可以带学生,在考试中加入他们3次,确保first id < secondid < thirdid
停止双打。
如果您需要额外的考试,或者某人只有2门考试,您需要处理它。如果不对3(或更多/更少)连接进行硬编码,则无法进行此类转换
答案 1 :(得分:0)
好吧,SQL不允许你这样做,所以在你的应用程序中执行这个处理可能会更好。
如果确实希望在MySQL中执行此操作,则可以使用比纯SQL稍强一些的stored routines(例如,您可以使用FOR
-loop)。< / p>