需要帮助让oracle“SORT BY”按照我想要的方式工作

时间:2013-06-28 12:16:09

标签: html sql oracle asp-classic

我有一个充满数据的表,它有五列:id(varchar2),description(varchar2),dc(number),crown(number)和lockout(单个char)

该表内置于使用ASP-classic制作的webapp中。该表的顶部有一行,标题包含每列的名称。当用户单击标题时,表将重建,按照他们单击升序或降序的列进行排序,具体取决于之前的方向(如网站上的典型排序按钮)。

我想要发生的事情是:当用户点击除了以外的任何行时,按照他们点击 的行按ID排序,例如,因为可能有数百条记录具有相同的描述值。

以下是我的代码片段,用于确定如何排序。

if Len(strSort) > 0 then
    sqlQry = sqlQry + " ORDER BY " & strSort
    if intSortDir <> "1" then
        sqlQry = sqlQry + " DESC"
    end if
end if

strSort从asp查询网址中提取,并在点击时添加到网址中。 intSortDir基本上被初始化为0,并在用户点击标题时切换。

总结一下,我的问题是,如何一次按两列排序,单击一列作为主要排序。

我试过了:

if Len(strSort) > 0 then
    if strSort = "id" then 
        sqlQry = sqlQry + " ORDER BY " & strSort
        if intSortDir <> "1" then
            sqlQry = sqlQry + " DESC"
        end if
    else
        sqlQry = sqlQry + " ORDER BY " & strSort & ",id"
        if intSortDir <> "1" then
            sqlQry = sqlQry + " DESC"
        end if
    end if
end if

它按照我想要的方式排序,但它不会让我切换排序方向。

1 个答案:

答案 0 :(得分:1)

if Len(strSort) > 0 then
    sqlQry = sqlQry + " ORDER BY " & strSort 
    if intSortDir <> "1" then
        sqlQry = sqlQry + " DESC"
    end if

    if strSort <> "id" then 
        sqlQry = sqlQry + ", id"
        if intSortDir <> "1" then
            sqlQry = sqlQry + " DESC"
        end if
    end if
end if

另外,使用javascript在浏览器中对这些行进行排序可能会更好。如果你可以使用jQuery,那么有一个tablesorter()插件可以让它变得简单。