关于access查询

2024-12-18 19:25:46
推荐回答(2个)
回答1:

你的这个数据库本身就是一个错误的设计。
你需要两个表——
表1:人员编号、姓名、单位;
表2:人员编号、年份、培训。

查询:
select * from 表2 left join 表1 on 表2.人员编号 = 表1.人员编号 where 年份 in (2001, 2002, 2007) and 培训 = 0

=======================================================
补充(举个例子):

表1数据
编号 姓名 单位
0001 张三 人事局
0002 李四 海事局

表2数据
编号 年份 培训
0001 2006 YES
0002 2006 YES
0001 2007 YES
0002 2007 NO

0001号员工张三,在2006和2007都有参加培训。
0002号员工李四,只在2006年有参加培训。

表1中的编号为主关键字,表2中编号和年份为复合关键字。
建议你去学一下《数据库系统原理》,设计出好的数据库,才能保证你以后的工作能够正确有效的开展。
====================================================
那需要三个表,把培训信息单独拿出来。

表1:[人员编号]、姓名、单位;
表2:[人员编号]、[培训编号]、参加;
表3:[培训编号]、年份、培训内容。

表1数据
人员编号 姓名 单位
0001 张三 人事局
0002 李四 海事局

表2数据
人员编号 培训编号 参加
0001 0001 YES
0002 0001 YES
0001 0002 YES
0002 0002 NO

表3数据
培训编号 年份 培训内容
0001 2006 扫地
0002 2007 擦桌子

查询:
select 表2.*, 表1.姓名, 表1.单位, 表3.年份, 表3.培训内容 from 表2 inner join 表1 on 表2.人员编号 = 表1.人员编号 inner join 表3 on 表3.培训编号 = 表2.培训编号

回答2:

1.在查询时选择群组功能,抓取学生和出生地两个字段。
在出生地下的条件中写:<>北京,"group by"处改为"Where"
在学生下面的"group by"改为“Count”
2.查询3要达到的目的一样。选择姓名,群组下的条件为:李*
再任选另一个字段,取"Count"值。