MYSQL ORDER BY未按预期显示

时间:2013-10-25 11:47:04

标签: php

我的排序有问题,我不明白是什么问题。 我有一张桌子

id  id_teacher     subject  class   hour           day
1   2 [->]           Math      X C     8         Monday
2   2 [->]           Math      X C     12       Wednesday
3   2 [->]           Math      X C     9         Tuesday
4   2 [->]           Math      VI B    10       Monday
5   2 [->]           Math      X C     11       Monday
6   2 [->]           Math      X C     10       Tuesday
7   5 [->]           Chimie   X C     9         Monday
8   5 [->]           Chimie   X C     12       Monday
9   2 [->]           Sport     X C      7         Monday

我有一个功能可以打印'小时'和'主题'。功能如下:

function OreMonday($item){
        $sth = $this->dbh->prepare("SELECT class FROM elevi WHERE id_elev = :id_elev;");
        $sth->bindParam(":id_elev", $item);   
        $sth->execute();
        $result = $sth->fetch(PDO::FETCH_ASSOC);
        $sth1 = $this->dbh->prepare("SELECT hour, subject, day FROM hourr WHERE class = :class ORDER BY hour DESC;");
        $sth1->bindParam(":class", $result['class']);   
        $sth1->execute();
        while ($result1 = $sth1->fetch(PDO::FETCH_ASSOC)) {
            if ($result1['day'] == 'Monday') {
                echo $result1['hour'];
                echo $result1['subject']."<br>";
            }
        }    
    }

}

$ item是$ _SESSION ['id'],$ result ['class']是来自另一个语句的X C

结果如下:

Monday
9Chimie
8Math
7Sport
12Chimie
11Math

我想要:

Monday
7Sport
8Math
9Chimie
11Math
12Chimie

1 个答案:

答案 0 :(得分:4)

    在数据库中
  1. ,小时列应该是数字列,而不是varchar或字符串列*
  2. 您应该订购ASC,而不是DESC
  3. * if(且仅当)因任何原因而无法更改列类型:check mysql sort string number