永发信息网

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

答案:3  悬赏:30  手机版
解决时间 2021-04-07 09:45
oracle数据库,用户表主要表字段为: userID(id),userName(姓名),userSn(排序字段),userDept(所属部门)
最佳答案
这里不存在排序不正常的情况。由于用户与部门是多对多的关心,你的排序顺序不可能固定不变,而是根据需要来确定排序的顺序。例如:
当处理以用户为主,查看用户在各部门的情况时,要按先用户后部门的顺序排序;
当处理以部门为主,查看各部门用户的情况时,要按先部门后用户的顺序排序。
全部回答
不清除你所指的排序正常是什么,如果按照你说的在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编码值无序的影响。
Select * From 用户表 Order By userDept,userSn --首先排序所属部门,再排序排序字段
Select * From 用户表 Order By userSn,userDept --首先排序排序字段,再排序所属部门
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
1982年8月20日中午12点半运势
一部蛮老的电影 主角去一座插有很多剑的山上
取出票后晚点可否搭乘其他班次火车
建聪牙科地址在哪,我要去那里办事
苹果通话声音怎么调大
500左右的烟有什么烟(一包)
写故事时总是找不到合适的人物名字,所以想来
办理宽带时赠送的手机可以不交话费吗
我想请两天假 什么理由好
烧麦用发面做还是死面
腾讯暑期实习面试一般在笔试后什么时候通知啊
属鸡人3一5点钟出生的命运
怎么样把支付宝设置成每次花钱都需要短信验证
华硕X552E配置CPU:AMD Dual E1-2100 1.0GH Me
麻将术语,两头拿独是什么意思?
推荐资讯
梦之约网咖在哪里啊,我有事要去这个地方
邮政储蓄银行校园招聘资格复审的报名登记表是
装配式结构能给当前的建筑施工带来多大的变化
有一首里面有一句话是心中没有把握的歌叫什么
光导管的光导照明的安装过程
为下面这则消息拟写的标题最恰当的一项是大江
如果用a表示一个自然数,那么与a相邻的两个自
单选题下列各项中,没有语病的一项是A.素质可
斯诺克通杆后面声音很响怎么修,特急
康齿泰口腔地址在哪,我要去那里办事
求详细解答:My coat _____ there
单选题2011年底,一个个被严重超载、违规运营
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?