PHP SQL查詢將多個列(在同一行)分隔為單獨的行
P粉336536706
P粉336536706 2023-07-27 18:07:59
0
1
325

我有一個表格,列出了學生的測驗結果。每一行包含一個學生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';


P粉336536706
P粉336536706

全部回覆 (1)
P粉908643611

理想情況下,你應該要有類似這樣的結構:

students

#
  • id
  • name

tests

#
  • id
  • number
  • #

test_results

#
  • id
  • student_id
  • #
  • test_id
  • #
  • result
  • #

這樣你就可以在一個查詢中取得學生的所有結果。

SELECT test_results.result AS Result, students.name as Student, tests.number as Testnumber FROM test_results LEFT JOIN students ON students.id = test_results.student_id LEFT JOIN tests ON tests.id = test_results.test_id WHERE student_id = {{id}}
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!