VB中如何用SQL实现复杂查询?高分在线!!

lilei 2005-05-31 12:13:13
我的数据库是ACCESS格式的,分为好几个表,有基本情况、学历、职称等。用SQL查基本情况很容易实现,可是查学历、职称就出现问题:因为学历、职称有多个,最后录入的才是最高学历,比如下表,我想统计大专有几人,这里01有大专学历,但不是最高学历,如何只统计出02是大专呢?

ID 学历 毕业时间 ……
01 高中
01 大专
01 大本
02 高中
02 大专

...全文
140 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
dqhuaying 2005-06-01
  • 打赏
  • 举报
回复
楼主: 你的表既然已经这样设计了 要统计出某ID的最高学历 ,只能比较哪个学习阶段离统计日期最短!
呵呵,其实楼主的表设计不是很好!
lilei 2005-05-31
  • 打赏
  • 举报
回复
这么复杂?
可是这是学历方面的,放到职称里就不行了
有很多人有两个职称,如经济师和政工师,如果他从事经济工作,而政工师取得时间比经济师取得时间晚,那岂不是查错了
sunliangchao 2005-05-31
  • 打赏
  • 举报
回复
也就是说 先建一个查询 把每个人的最后毕业时间 查出来
然后建立一个 连接的查询 把最后毕业时间和姓名都相等的查出来,刚才的语句不全,请理解意思自己做。
sunliangchao 2005-05-31
  • 打赏
  • 举报
回复
新建查询1 :select max(毕业时间) as 最后毕业 from 学历信息表 group by 姓名
新建查询2(加上基本表 和 查询1): select 学历 from 学历信息表 where 毕业时间=查询1.最后毕业 group by 姓名
lilei 2005-05-31
  • 打赏
  • 举报
回复
现在问题是,我想统计大专几人,按要求,应该是1人,如果2人就是错的了,因为01的学历是大本
CPLiu 2005-05-31
  • 打赏
  • 举报
回复
按毕业时间
longshouwo 2005-05-31
  • 打赏
  • 举报
回复
给你思路:你先找到ID为你要查的ID+1的第一个记录,再向后退一条记录,再将学历字段内容提取出来,这样不是可以得到你要的结果了?
  • 打赏
  • 举报
回复
select * from 学历信息表 where id='02' and 学历='大专' group by 姓名
DawnPine 2005-05-31
  • 打赏
  • 举报
回复
1. Access支持记录号, 可以用记录号来识别
2. 最好加一个字段来描述这些信息, 哪怕是录入时间也行
icedut 2005-05-31
  • 打赏
  • 举报
回复
我的数据在录入时,最后录的即是想要的职称(不一定按取得时间顺序),如下表

ID 职称 ……
01 经济师 ---
01 政工师 ---

这两者之间有个什么序号么
如果有的话,就和学历的差不多,只是不用毕业时间,而用那个序号
lilei 2005-05-31
  • 打赏
  • 举报
回复
我的数据在录入时,最后录的即是想要的职称(不一定按取得时间顺序),如下表

ID 职称 ……
01 经济师
01 政工师
02 经济师

这种情况下能统计出经济师1个,政工师1个
icedut 2005-05-31
  • 打赏
  • 举报
回复
有很多人有两个职称,如经济师和政工师,如果他从事经济工作,而政工师取得时间比经济师取得时间晚

--
查询职称的时候,你想要什么样的结果

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧