两张ACCESS数据表合并查询的问题?用怎么样的查询语句!

chengbhz 2005-09-17 08:53:32

本人在试做一个计量仪器管理系统.有如下两张表

1、《资产总台帐》(计量编号唯一性)

计量编号 仪器名称
010101 游标卡尺
010102 千分尺



2、《检定总台帐》(每次仪器检定后就把结果输入去,同一计量编号时间一长就有有多条的数据)


计量编号 校正日期 有效期至

010101 2003-05-21 2004-05-20
010101 2004-05-15 2005-05-14
010101 2005-05-05 2006-05-04
010102 2004-05-15 2005-05-14
010102 2005-05-05 2006-05-04


如果我使用{ select 资产总台帐.计量编号,资产总台帐.仪器名称, 检定总台帐.有效期至 from 资产总台帐 inner join 检定总台帐 on 资产总台帐.计量编号=检定总台帐.计量编号 }进行查询 ,会得到下面的组合表:


计量编号 仪器名称 校正日期 有效期至

010101 游标卡尺 2003-05-21 2004-05-20
010101 游标卡尺 2004-05-15 2005-05-14
010101 游标卡尺 2005-05-05 2006-05-04
010102 千分尺 2004-05-15 2005-05-14
010102 千分尺 2005-05-05 2006-05-04

检定总台帐中同一仪器所有的记录都会出现,如果我只想得到每种仪器的有效期最新的一条数据:即想得到如下的表(同一计量编号,有效期旧的不显示,即每个计量编号只显示最新的检定数据)

计量编号 仪器名称 校正日期 有效期至

010101 游标卡尺 2005-05-05 2006-05-04
010102 千分尺 2005-05-05 2006-05-04


必须用什么样的查询语句,谢谢高手指教

...全文
357 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
chengbhz 2005-09-17
  • 打赏
  • 举报
回复
就象上面的检定总台帐有两条数据,您的SQL只能返回一个计量编号的数据
chengbhz 2005-09-17
  • 打赏
  • 举报
回复
是的。
yas 2005-09-17
  • 打赏
  • 举报
回复
[有效期至] 是日期型字段吗?
chengbhz 2005-09-17
  • 打赏
  • 举报
回复
两位大侠的SQL语句有如下的问题:

“资产总台帐.计量编号,资产总台帐.仪器名称, 检定总台帐.有效期至 from 资产总台帐 inner join 检定总台帐 on 资产总台帐.计量编号=检定总台帐.计量编号 order by 检定总台帐.有效期至 desc top 1” 运行会产生group by 语法错误。


“select top 1 a.计量编号,a.仪器名称,b.校正日期,b.有效期至 from 资产总台帐 as a inner join 检定总台帐 as b on a.计量编号=b.计量编号 order by b.有效期至 desc”吸能得到一个条数据,无法得到不同计量编号的最新检定数据。

yas 2005-09-17
  • 打赏
  • 举报
回复
select top 1 a.计量编号,a.仪器名称,b.校正日期,b.有效期至 from 资产总台帐 as a inner join 检定总台帐 as b on a.计量编号=b.计量编号 order by b.有效期至 desc
threenewbee 2005-09-17
  • 打赏
  • 举报
回复
资产总台帐.计量编号,资产总台帐.仪器名称, 检定总台帐.有效期至 from 资产总台帐 inner join 检定总台帐 on 资产总台帐.计量编号=检定总台帐.计量编号 order by 检定总台帐.有效期至 desc top 1
wwh999 2005-09-17
  • 打赏
  • 举报
回复
看看。。怎么分组先.
leongwong 2005-09-17
  • 打赏
  • 举报
回复
呵呵!楼主有意思!
Oreo.M 2005-09-17
  • 打赏
  • 举报
回复
联接!
yas 2005-09-17
  • 打赏
  • 举报
回复
正的不好意思,一时粗心 ,少了一层Group BY
myhgyp 2005-09-17
  • 打赏
  • 举报
回复
标准答案来了,结贴吧,呵呵。。

select y.* from (select 资产总台帐.计量编号,资产总台帐.仪器名称, 检定总台帐.有效期至 from 资产总台帐 inner join 检定总台帐 on 资产总台帐.计量编号=检定总台帐.计量编号) as y,
(select 计量编号,max(有效期至) as 有效期至 from (select 资产总台帐.计量编号,资产总台帐.仪器名称, 检定总台帐.有效期至 from 资产总台帐 inner join 检定总台帐 on 资产总台帐.计量编号=检定总台帐.计量编号) group by 计量编号) as x
where x.计量编号 = y.计量编号 and x.有效期至 =y.有效期至

1,216

社区成员

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

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