0 0

SQL分级排序逻辑如何实现?5

问题详细介绍:
已实现点击某一列时能够升/降序功能。
现在需求是,当我点击name时,根据name排序后,然后再点击class时接着name排序之后继续分级排序,subject也是如此。
以此类推,如果我依次点击name、subject、class(统一升序)之后,再点击class降序,name和subject作何处理。灵活性很强。
求大神分析这一逻辑如何实现?


pk no name class subject

1 1001 张三 A303 English
2 1002 李四 A302 Math
3 1003 王五 A301 History
4 1004 赵六 A302 Physics
5 1002 李四 A303 Physics
6 1003 王五 A302 Math
7 1001 张三 A302 Physics
8 1002 李四 A301 Math
9 1003 王五 A301 History
10 1002 李四 A302 Physics
2013年5月29日 15:15

4个答案 按时间排序 按投票排序

0 0

建议放前台用javascript进行排序,如果用的有js的grid插件,修改源码,按照你说的方式进行排序。

2013年5月30日 08:44
0 0

不太清楚你想要的具体是什么,我理解的是三个字段顺序排序并且排序方式是独立的

可以这么处理:
定义一个list存放排序对象,每次点排序字段的时候
验证是否已经有该字段的排序对象
  --有:更改排序方式
  --没有:新增该字段的排序对象(排序方式默认)
 
  --(3)没有的话同上,有的话将该对象删除,并将更改后的对象新增到list即可

排序字段的顺序就按照你说的点击顺序,如果需求是点击字段的排序顺序放到最后的话,按照3判断

有问题的话,请见谅哈

2013年5月29日 18:16
0 0

这种排序通常是只一列排序的。

比如点name一次,按name升,点两次,按name降。
有做得更进一步的是,点三次则取消name的排序。
以上在排序中如果点击任何其他非name的列,都将按点击列排序,name列被忽略。

你现在的需求恐怕没有那么清晰,我指细节上的,下面是我粗略的设计。
初始化页面后,

  • 点击某列比如name。如果是第一次,则该列显示 1 + 升序。如果是第二次,则显示 1 + 降序,如果是第三次则什么都不显示,即不参与排序。
  • 点击某列比如class。如果已经有其他列,比如有2列在参与排序了。则显示 2 + 1 = 3,再加上升或降。
  • 点击某列比如还是class,当是第三次点击即取消排序时,则从排序的列中移除class,class后面的排序列向前移动。比如原本是 name 1 升,class 2 降,subject 3 升这样,在取消class排序后变成name 1 升,subject 3 升这样。


参考我在jsfiddle上例子http://jsfiddle.net/Fhr5x/

但是这么一来操作会麻烦,通常的解决办法是提供个csv或excel下载,让客户下载到本地,随他耍子。

2013年5月29日 17:13
0 0

这样的排序是有先后顺序的,就是说你点击name排序后,再点击class,则按照name,class进行排序,再点击subject,则按照name,class,subject进行排序;如果这时你再点击了class降序,则按照name,class desc进行排序,将后面的排序字段自动删除。

上面定义的先后顺序是name>class>subject,你也可以自己定义先后顺序。

2013年5月29日 16:20

相关推荐

    帆软:排序问题(通过帆软设置或者sql排序)

    3. **动态排序**:在SQL中,还可以使用`CASE`语句实现复杂的排序逻辑,根据特定条件对数据进行排序。 三、结合帆软与SQL的排序 1. **预处理排序**:在SQL查询时完成排序,帆软报表仅显示已排序的结果。这种方式...

    程序员的SQL金典.rar

     10.5 业务主键与逻辑主键  10.6 NULL的学问  10.6.1 NULL与比较运算符  10.6.2 NULL和计算字段  10.6.3 NULL和字符串  10.6.4 NULL和函数  10.6.5 NULL和聚合函数  10.7 开窗函数  10.7.1 开窗函数简介  ...

    SQL Server 2008 商业智能完美解决方案(3)

    编写对销售数据进行分级、排序和深化的查询; 开发提取、转换、加载(ETL)解决方案; 添加源代码控制系统; 通过加密和凭据保护部署的包; 用MDX和DMX查询设计器构建基于OLAP多维数据集和数据挖掘模 型的报表; ...

    SQL Server 2008商业智能完美解决方案 3/3

    编写对销售数据进行分级、排序和深化的查询; 开发提取、转换、加载(ETL)解决方案; 添加源代码控制系统; 通过加密和凭据保护部署的包; 用MDX和DMX查询设计器构建基于OLAP多维数据集和数据挖掘模 型的报表; 用NET...

    SQL Server 2008商业智能完美解决方案 1/3

    编写对销售数据进行分级、排序和深化的查询; 开发提取、转换、加载(ETL)解决方案; 添加源代码控制系统; 通过加密和凭据保护部署的包; 用MDX和DMX查询设计器构建基于OLAP多维数据集和数据挖掘模 型的报表; 用NET...

    SQL Server 2008商业智能完美解决方案 2/3

    编写对销售数据进行分级、排序和深化的查询; 开发提取、转换、加载(ETL)解决方案; 添加源代码控制系统; 通过加密和凭据保护部署的包; 用MDX和DMX查询设计器构建基于OLAP多维数据集和数据挖掘模 型的报表; 用NET...

    绝对经典的万能查询统计、分级汇总、多维统计类库及demo(.net 2005 c#)

    标题中的“绝对经典的万能查询统计、分级汇总、多维统计类库及demo(.net 2005 c#)”揭示了这是一个针对.NET Framework 2.0开发的C#编程库,专门用于处理数据查询、统计分析以及分级汇总。这个库提供了一种通用的解决...

    父子结点树转化为多级编码探讨与研究

    这表明了 SQL 语言的强大之处,不仅仅是数据检索,还可以用于复杂的逻辑运算和数据转换。 - **单条 SQL 语句实现转换**: 本文介绍了一种通过一条 SQL 语句来实现从父子结点关联到多级编码转换的方法。这种方法极大地...

    数据库学籍管理系统(SQL)课程设计.doc

    【数据库学籍管理系统(SQL)课程设计】是一个针对高校学生学籍管理的软件开发项目,旨在利用SQL数据库技术提升学生管理的效率和准确性。系统的主要目标是实现学籍管理的自动化,便于信息的规范化存储、科学统计和快速...

    9数据库原理与应用教程—SQL Server数据库__考试题目(9) -.docx

    4. **保护数据安全**:通过视图可以限制用户只能访问特定的数据,从而实现数据的分级访问控制。 5. **提高数据共享性**:视图可以将来自不同表的数据整合在一起,方便不同用户或应用程序访问。 ### 可更新视图的...

    无限级分类无限级分类无限级分类无限级分类

    根据提供的信息,我们可以了解到这份资料主要涉及的是一个数据库表结构定义和一段PHP代码,用于实现无限级...通过合理的数据结构设计和代码实现,可以有效地管理大量的分级数据,并且使得数据的维护变得更加简单高效。

    据说是阿里巴巴公司DBA笔试题

    11. 和排序相关的内存在 8i 和 9i 的调整:使用 sort_area_size 参数来调整排序内存 12. 取第 21—30 条记录显示:使用 ROWNUM 伪列和子查询来实现 数据库基本概念 1. pctused 和 pctfree 的含义和作用:pctused ...

    关于无限分级(ASP+数据库+JS)的实现代码

    2. **查询数据**:使用`ADODB.Recordset`对象执行SQL查询语句,按照`byid`和`id`排序,确保父分类先于子分类出现。 3. **输出数据**:遍历查询结果集,使用`Response.Write`将每条记录的关键信息输出到页面。输出...

    2014年下半年软件设计师上午试题

    1. 计算机硬件:CPU中的算术逻辑单元(ALU)包含加法器,负责执行基本的算术和逻辑运算。 2. 存储体系:分级存储体系是为了解决存储容量、成本和速度之间的矛盾,通过缓存、主存和辅助存储的层次结构提高整体性能。...

    2014年下半年软件设计师上午试题(含答案)

    8. 对一待排序序列分别进行直接插入排序和简单选择排序,若待排序序列中有两个元素的值相同,则直接插入排序和简单选择排序都可以保证这两个元素在排序前后的相对位置不变(A)。 知识点:算法设计,排序算法。 9....

    asp.net博客系统

    此外,系统还支持文章的搜索和排序,方便用户快速找到感兴趣的内容。 3. **回复与评论**:博客系统通常包含评论模块,允许读者对文章进行评论和讨论。管理员可以设置是否开启评论功能,以及是否需要审核评论。评论...

    Hibernate 的学习笔记

    - **排序**:通过 `<order-by>` 元素实现排序。 - **组件映射**:将实体的一个属性映射为另一个实体类,通常用于表示复杂的数据结构。 #### 十一、对象状态与识别 - **状态**: - Transient(瞬态):未被持久化...

Global site tag (gtag.js) - Google Analytics