我有一张叫‘宽床单’的桌子。这是一个班级学生所有学科总分的汇总之处。
通过此查询获得了每个主题的总数
public function getTotalMarksForStudnets($subject_id,$student_id,$table,$totField){
$this->db->select($totField);
$this->db->where('subject_id', $subject_id);
$this->db->where('student_id', $student_id);
$q = $this->db->get($table);
if($q->num_rows() > 0){
return $q->row()->$totField;
}else{
return '0';
}
}
并用此显示
<td style="border: 1px solid black; font-size:11px;width:120px;text-align:center;">
<?php
$totalMarks = $this->student_model->getTotalMarksForStudnets($tmrow['subject_id'],$stdName['pstudent_id'],$table,$totField);
$gtotal = $gtotal + $totalMarks;
if($totalMarks!=0){
$totSubjects = $totSubjects + 1;
}
echo $totalMarks;
?></td>
而总体总数显示为
<td style="border: 1px solid black; font-size:11px;width:120px;text-align:center;"><?php echo $gtotal;?></td>
一切都很顺利,直到我不得不对表格进行排序,从总分最高到最低。表现在应该如下所示:
我真的被困住了。我从这里怎么走?
好吧,按照@titi的建议,我做了一个group_by查询,得出了这样的结果:
public function getOverallMarksForStudnets($subject_id,$student_id,$table,$totField){
$this->db->select_sum($totField);
$this->db->where('subject_id', $subject_id);
$this->db->where('student_id', $student_id);
$this->db->group_by('subject_id', $subject_id);
$this->db->group_by('student_id', $student_id);
$this->db->order_by($totField, 'DESC');
$q = $this->db->get($table);
if($q->num_rows() > 0){
return $q->row()->$totField;
}else{
return '0';
}
}
如果这是正确的,我如何显示它?
可以在查询中添加Order By
语句
$this->db->order_by($totfield,“desc”);
desc
用于降序或asc
用于升序
已编辑
像这样的事情怎么样:
$this->db->select( SUM($totField) );
$this->db->group_by( 'student_id', 'subject_id' );
$this->db->order_by( $totField , 'DESC');
$q = $this->db->get($table);
结果将是一个数组,包含每对学生/科目的总分,并按总分排序。