oracle数据库,用户表主要表字段为: userID(id),userName(姓名),userSn(排序字段),userDept(所属部门)

由于一个用户可能存在多个部门,userDept字段的值使用,302,303,来表示在2个部门下面,现在遇到一个问题,就是用户的排序问题,之前是根据userSn字段来排序的... 由于一个用户可能存在多个部门,userDept字段的值使用,302,303,来表示在2个部门下面,现在遇到一个问题,就是用户的排序问题,之前是根据userSn字段来排序的,当用户在302这个部门下面排序正常后,在303这个下面的排序就不正常,大家有没有什么号的办法来解决呢。 展开
 我来答
碰撞时空
2012-08-22 · TA获得超过2338个赞
知道大有可为答主
回答量:3174
采纳率:75%
帮助的人:862万
展开全部
Select * From 用户表 Order By userDept,userSn --首先排序所属部门,再排序排序字段
Select * From 用户表 Order By userSn,userDept --首先排序排序字段,再排序所属部门
随o天
推荐于2018-04-12 · TA获得超过3158个赞
知道大有可为答主
回答量:1740
采纳率:71%
帮助的人:2034万
展开全部
这里不存在排序不正常的情况。由于用户与部门是多对多的关心,你的排序顺序不可能固定不变,而是根据需要来确定排序的顺序。例如:
当处理以用户为主,查看用户在各部门的情况时,要按先用户后部门的顺序排序;
当处理以部门为主,查看各部门用户的情况时,要按先部门后用户的顺序排序。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
blue_flyer
2012-08-22 · TA获得超过223个赞
知道小有建树答主
回答量:222
采纳率:100%
帮助的人:158万
展开全部
不清除你所指的排序正常是什么,如果按照你说的在302下排序正常后,如果在303下面有一个userID,userName 但是在302下没有这个userID,userName,那么按照303后这个userID,userName如何按照你说的规则排序?要排到哪个位置?这个需要有标准才能给你解答
更多追问追答
追问
userId  userName  userSn  userDept
1 zhangsan 1 ,302,
2 lisi 2 ,302,303,
3 wangwu 3 ,303,
302部门下的用户为zhangsan,lisi ,根据userSn的排序为:zhangsan,lisi
303部门下的用户为lisi,wangwu,根据userSn的排序为:lisi,wangwu,
由于wangwu的职位特殊是领导人物,必须排在lisi之前,这里就会有问题了,
追答
明白你的意思了,给你一个思路
因为你的用户表中userId设计的时候可以能唯一的,同时在
userDept又存在一个userId含有多个部门代码,这样为了便于分辨每个部门所在的userName根据职位排序,你可以这样:把userSn字段中的数值设为字符属性,然后按照以上你的表
userDept字段最多两个部门编码,可以通过userSn字段中两位字符来分别标识对应部门的重点排序位置,如下
userId userName userSn userDept
1 zhangsan 10 ,302,
2 lisi 22 ,302,303,
3 wangwu 01 ,303,
也就是zhangsan在302部门里排第一给他一个1,而在303中没有位置,则给个0,就是'10'
lisi在302中排第二则给他个2,在303中有位置且排在第二位,则给个2,就是'22'
wangwu在302中没有便是0,在303中有位置且排第一,则给个1,就是'01'
这样不管你按照什么部门编码取出数据然后按照userSn排序都可以按照职位重点来顺序了
---------------------------------------------------------
当然以上是按照你举的例子只有两个部门且用户3个的情况来举例,如果部门N个,用户很多,则userSn的设计可以扩展长度,比如用户数量不多于两位数(最多99个)则可以用两位数字字符的大小关系来表示部门中的职位顺序,如果部门有大于两个,那就一次扩展标识即可。不知道说明白没有。
-------------------------------------
题外话,其实你设计的时候为什么不这样?
userId userName userSn userDept
1 zhangsan 1 302
2 lisi 2 302
2 lisi 2 303
3 wangwu 1 303 这样userDept同值的只需要按照userSn排序即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式