PHP SQL查询将多个列(在同一行中)分隔为单独的行
P粉336536706
P粉336536706 2023-07-27 18:07:59
0
1
343

我有一个表格,列出了学生的测试结果。每一行包含一个学生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学习者快速成长!