oracle数据库,用户表主要表字段为: userID(id),userName(姓名),userSn(排序字段),userDept(所属部门)
答案:3 悬赏:30 手机版
解决时间 2021-04-07 09:45
- 提问者网友:雪舞兮
- 2021-04-07 05:47
oracle数据库,用户表主要表字段为: userID(id),userName(姓名),userSn(排序字段),userDept(所属部门)
最佳答案
- 五星知识达人网友:像个废品
- 2021-04-07 06:11
这里不存在排序不正常的情况。由于用户与部门是多对多的关心,你的排序顺序不可能固定不变,而是根据需要来确定排序的顺序。例如:
当处理以用户为主,查看用户在各部门的情况时,要按先用户后部门的顺序排序;
当处理以部门为主,查看各部门用户的情况时,要按先部门后用户的顺序排序。
当处理以用户为主,查看用户在各部门的情况时,要按先用户后部门的顺序排序;
当处理以部门为主,查看各部门用户的情况时,要按先部门后用户的顺序排序。
全部回答
- 1楼网友:行路难
- 2021-04-07 08:04
不清除你所指的排序正常是什么,如果按照你说的在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排序即可追问用户200多人,部门30来个,排序的位置是变化着,操作起来太麻烦了,后面设计的表,在其他方面会出现比较麻烦的操作追答鉴于你的userDept中的编码值是无序的,个人认为还是再建立一个人员排序的表比较好,用来关联你的用户表,
表下 USER_sort : userId userSn userDept 增加用户的时候同时给这个表中增加信息,这个表就是用来标识每个用户在不同部门下 的不同排序,然后提取的时候关联两表的userId和userDept=‘你要提取的部门编码’信息即可
==========
如果还是想在原表基础上做部门排序,那就把userSn设计成 ,部门1编码+序号码,部门2编码+序号码, 通过逗号+部门编码+序号来判断对应部门下的人员序号,这样就不受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排序即可追问用户200多人,部门30来个,排序的位置是变化着,操作起来太麻烦了,后面设计的表,在其他方面会出现比较麻烦的操作追答鉴于你的userDept中的编码值是无序的,个人认为还是再建立一个人员排序的表比较好,用来关联你的用户表,
表下 USER_sort : userId userSn userDept 增加用户的时候同时给这个表中增加信息,这个表就是用来标识每个用户在不同部门下 的不同排序,然后提取的时候关联两表的userId和userDept=‘你要提取的部门编码’信息即可
==========
如果还是想在原表基础上做部门排序,那就把userSn设计成 ,部门1编码+序号码,部门2编码+序号码, 通过逗号+部门编码+序号来判断对应部门下的人员序号,这样就不受userDept编码值无序的影响。
- 2楼网友:怀裏藏嬌
- 2021-04-07 07:15
Select * From 用户表 Order By userDept,userSn --首先排序所属部门,再排序排序字段
Select * From 用户表 Order By userSn,userDept --首先排序排序字段,再排序所属部门
Select * From 用户表 Order By userSn,userDept --首先排序排序字段,再排序所属部门
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯