提问者:小点点

从最高到最低排序总分


我有一张叫‘宽床单’的桌子。这是一个班级学生所有学科总分的汇总之处。

通过此查询获得了每个主题的总数

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

如果这是正确的,我如何显示它?


共1个答案

匿名用户

可以在查询中添加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);

结果将是一个数组,包含每对学生/科目的总分,并按总分排序。