• 全部
  • 问答

难题征求最佳解决方案

binbin 2002-04-01 05:08:06
我的数据库中几个人员表

一个是市人武部干部
一个是基层人武干部
一个是科技人员
一个是退役军人

因为是数据是分次收集,按用户的工作计划分别收集。因此,各个表之间有重复数据,字段不一样(单位,姓名,生日,文化程度,政治面貌等字段相同)即科技人员有可能是基层干部,也同时可能是退役军人,或者是市人武干部,退役军人可能是科技人员,而且可能在基层做干部,也可能不做干部。从集合的角度来看,找不到能不重复又能构成人员全集的组合。
表与表完全是交叉重复,不是包含。
现在要查询数据库中不同文化程度/政治面貌...有多少人并列出数据。
我看只能按姓名+生日来去重。
但是,怎么写这个SQL语句呢?
还是把所有表的相同字段数据都取出来放入一个临时表,再对临时表去重?——对于大量的数据来说好象不太妙——我做的这个是网络版的,MYSQL在网络服务器上。

此外,用户要求能给出一定条件如专业,从各个单位随机抽指定的人数,所抽人数不能超过给定的比例,由于没有一个确切的人员全集,必须到这些表里去分别找,同样有重复问题,此操作必须在上一步的基础上做,如何随机抽取呢?

...全文
16 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
shuixin13 2002-11-17
发表时间: 2002-4-1 17:08:07
最后回复: 2002-4-18 21:09:34
如果楼主未回复,
帖分将无法返还帖主!

犬犬结帖!
回复
Suddy 2002-04-18
分析唯一性和多重性,了解重复机制
引用机制

听不懂?
回复
sandj 2002-04-18
看情况是够复杂的了
不过估计到你手里也就是这样子了,现在说什么也晚了
除非能够重头在来,……也不现实

那么,你现在把所有的饿记录放到一个完整的表中,
当然,有重复的记录,那么我们现在就是要把这些部分重复的记录给合并就好了
但是有一个问题,就是如果有某字段内容不是完全相同
(当然不是单位、名字、性别这些完全用来定位的字段了,你所列出的某些字段有变更的可能吗?比如学历、政治面貌等)
我们如何处理?直接覆盖还是列出人工处理?

举例子说吧:
合并成一个包含所有记录和字段的完整表我就不说了,想必你自己就能够完成
那么当我以某些条件确定出某些记录是一个人的信息后,我对于重复的字段该如何处理?
比如原始表1的住址是AAAA原始表2的住址是BBBB,而已经通过其他的条件得知这些记录确实是同一个人的,我要怎么处理?
是直接用其中一个覆盖掉吗?
那么就需要用最新的表的数据了
当然,也可以作为一个长字段直接相加也可以
还有一个方法就是将这些列出来你手工做,不过推测不可行
这样处理后的结果放到一个新表中应该就出现你所要的数据了
这样做可以吗?
回复
Vitty 2002-04-16
应该一开始就建立一个表,在提交时查询要提交的人是否存在于数据库中,如果存在,直接update相应的项,如果不存在,直接insert就可以了。
回复
bombshell 2002-04-16
你先伪造几个表,贴出来,那样分析问题更清楚。现在只看文字脑子都有点乱了。
回复
kinlam 2002-04-13
其实可不可以用一个表处理,当他们是一种类别那就更方便.
回复
binbin 2002-04-12
现在问题是没法得到全体人员表。
在一个地区内该系统内有多少人?不知道。
全体人员的资料是否全部得到了?不知道。
已得到的数据中包含了多少人的资料?不知道。
有多少人在几统计中重复计算了?不知道。

现在手中只有从几种渠道(这些渠道不可能同时开展工作)得到的资料,
已知有重复统计,
已知可能有人不在这些资料中,系统也不关心这些人(假设其不存在)。

如何解决?即使现在花大力气整理出来,将来下一次统计来的资料还是这样,计算机管理还有何意义?不如手工做算了。
回复
zydmoon 2002-04-01
我觉得你的这个数据库在建表时不太科学,冗余较多,而且也容易造成更新和插入删除异常,最好还是建立一个全体人员表。不知你认为如何?大家讨论讨论。
回复
trainee 2002-04-01
你最好统一成一张表,否则现在或以后会很麻烦,
回复
binbin 2002-04-01
我感觉缺少一个Master表,一个全体人员表,将这些detail表联系起来,但用户的数据都是分散统计的,在录入时也要求分别输入,怎么办呢?
回复
发帖
MySQL
创建于2007-09-28

5.4w+

社区成员

MySQL相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2002-04-01 05:08
社区公告
暂无公告