我有一个包含10列的表(stdID,stdName,score1,score2..... Score8)。
表中有超过100个学生记录(stdID),具有不同的分数(score1.... score8)。
我想要的是做一个查询,它将获取所有学生,并将结果按score1到score8的总和分组。
即我应该能够显示学生的类别,如:A.学生总成绩> 70 B.学生总成绩50等。
我用的是codeigniter 4.4
到目前为止,我可以做一个查询,获取一个类别:
$this->select(stdID,stdName, (score1 + score2 + ....score8) as total);
$this->groupBy(stdID);
$this->having(total > 70);
$this->findAll();
字符串
我使用foreach循环遍历结果,返回5个总分> 70的学生
但我真正想要的是多个类别的总分1至8分,而不仅仅是类别> 70。我不知道如何去请。
2条答案
按热度按时间sd2nnvve1#
您可以获取所有学生记录及其总分数,然后使用PHP根据总分数范围将其分类到组中。以下是如何使用CodeIgniter的Query Builder完成的:
字符串
此代码将给予一个关联数组
$categories
,其中每个键代表一个类别,值是属于该类别的学生的数组。您可以根据需要添加更多类别,方法是向$categories
数组添加更多键,并向foreach
循环添加更多代码。fnatzsnv2#
为学生创建模型
字符串
在控制器中访问方法
型
然后将其显示在视图中
型
如果score列是动态的(N个列),则可以将此getStudentsByScoreCategory()方法更改为
型