搜尋

首頁  >  問答  >  主體

PHP SQL查詢將多個列(在同一行)分隔為單獨的行

<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>
P粉336536706P粉336536706494 天前392

全部回覆(1)我來回復

  • P粉908643611

    P粉9086436112023-07-28 17:42:24

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

    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}}

    回覆
    0
  • 取消回覆