PHP SQL查詢將多個列(在同一行)分隔為單獨的行
P粉336536706
2023-07-27 18:07:59
<p>我有一個表格,列出了學生的測驗結果。每一行包含一個學生ID,有一個列,每個列代表一個單獨的測驗分數。現在我需要建立一個查詢,讓我能夠看到每個測驗分數對應的學生ID的單獨行。我已經在Stack Overflow上搜尋了最佳方法,但是我沒有找到看起來高效的方法。我為一個學生(1000002)編寫了下面列出的程式碼,但是對於我想要實現的目標來說,它似乎過於複雜了,而且只適用於三個測驗分數,所以我需要添加更多程式碼來獲取所有16個分數。是否有一種簡單的方法透過單一查詢來實現這一點(首選),或者我需要提取行,然後使用循環從每個元素建立一個數組(次選)? </p>
<pre class="brush:php;toolbar:false;">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';</pre>
<p><br /></p>
理想情況下,你應該要有類似這樣的結構:
#students
id
name
#tests
id
number
#test_results
id
student_id
test_id
result
這樣你就可以在一個查詢中取得學生的所有結果。