我有一個表格,列出了學生的測驗結果。每一行包含一個學生ID,有一個列,每個列代表一個單獨的測驗分數。現在我需要建立一個查詢,讓我能夠看到每個測驗分數對應的學生ID的單獨行。我已經在Stack Overflow上搜尋了最佳方法,但是我沒有找到看起來高效的方法。我為一個學生(1000002)編寫了下面列出的程式碼,但是對於我想要實現的目標來說,它似乎過於複雜了,而且只適用於三個測驗分數,所以我需要添加更多程式碼來獲取所有16個分數。是否有一種簡單的方法透過單一查詢來實現這一點(首選),或者我需要提取行,然後使用循環從每個元素建立一個數組(次選)?
SELECT scores_uid , score1 FROM assessment_scores WHERE fk_assigned_uid = '1000002' UNION ALL SELECT scores_uid , score2 FROM assessment_scores WHERE fk_assigned_uid = '1000002' UNION ALL SELECT scores_uid , score3 FROM assessment_scores WHERE fk_assigned_uid = '1000002';
理想情況下,你應該要有類似這樣的結構:
#students
id
name
#tests
id
number
#test_results
id
student_id
test_id
result
這樣你就可以在一個查詢中取得學生的所有結果。