ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2930|回复: 11

[求助] 建立查询——Access 两表建立查询

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-12-28 08:19 | 显示全部楼层 |阅读模式
本帖最后由 csucjk 于 2014-12-28 09:55 编辑

各位大侠,本人新手,初学Access 请教各位如何建立查询,样本如附件,效果参考图片!
谢谢!

A岗位 固定课程有 A1/A3/A3,我想查询 指定员工 “A-001”哪些课程上了,哪些课程还没有上 ,同时查询出来!

附件只是一个简单的例子,因为员工数、课程数比较多

test.JPG

Test.rar

9.14 KB, 下载次数: 28

TA的精华主题

TA的得分主题

发表于 2014-12-28 08:58 | 显示全部楼层
这个查询做不出来,因为找不到工号为A-011的员工,A-001也未选择A3课程.

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-28 09:51 | 显示全部楼层
zez 发表于 2014-12-28 08:58
这个查询做不出来,因为找不到工号为A-011的员工,A-001也未选择A3课程.


弄错了,第二个员工工号 也是“A-001”

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-28 15:17 | 显示全部楼层
真的没有办法创建查询么?

TA的精华主题

TA的得分主题

发表于 2014-12-28 21:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
查不到员工A-001选择A3课程

TA的精华主题

TA的得分主题

发表于 2014-12-28 22:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. SELECT T1.员工工号,T1.岗位,T1.课程编号,T2.日期 FROM
  2. (SELECT A.课程编号,A.岗位,B.员工工号 FROM TABLE1 A,
  3. (SELECT DISTINCT 岗位,员工工号 FROM TABLE2) B
  4. WHERE A.岗位=B.岗位)T1
  5. LEFT JOIN
  6. TABLE2 T2
  7. ON T1.岗位=T2.岗位 AND T1.课程编号=T2.课程编号 AND T1.员工工号=T2.员工工号
  8. ORDER BY T1.岗位,T1.员工工号,T1.课程编号
复制代码

注意:楼主的table1表中,ID号为2对应的课程编号,其值并非为A1,里面有大量因强制换行符而被隐藏的数据。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-29 11:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 csucjk 于 2014-12-29 11:51 编辑
wuxiang_123 发表于 2014-12-28 22:24
注意:楼主的table1表中,ID号为2对应的课程编号,其值并非为A1,里面有大量因强制换行符而被隐藏的数据。 ...


貌似结果和我要求的不太一样,不过太强大了,我自己试试,看看能不能改出来

TA的精华主题

TA的得分主题

发表于 2014-12-29 19:45 | 显示全部楼层
csucjk 发表于 2014-12-29 11:48
貌似结果和我要求的不太一样,不过太强大了,我自己试试,看看能不能改出来
  1. SELECT T1.员工工号,T1.岗位,T1.课程编号,T2.日期 FROM
  2. (SELECT A.课程编号,A.岗位,B.员工工号 FROM TABLE1 A LEFT JOIN
  3. (SELECT DISTINCT 岗位,员工工号 FROM TABLE2) B
  4. ON A.岗位=B.岗位)T1
  5. LEFT JOIN
  6. TABLE2 T2
  7. ON T1.岗位=T2.岗位 AND T1.课程编号=T2.课程编号 AND T1.员工工号=T2.员工工号
  8. ORDER BY T1.岗位,T1.员工工号,T1.课程编号
复制代码
难道你是想这样?

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-31 07:42 | 显示全部楼层
本帖最后由 csucjk 于 2014-12-31 07:44 编辑

A-001与A-002 都有上过两次课程,查了来的各只有一个日期,结果不太对!

其实我想要的结果是 下面图这样的  ,三个都是"A-001”,对应两个日期,一个空白



test.JPG

点评

此图不是所有员工号都是A-001,表格第三行的工号是A-011.  发表于 2014-12-31 20:10

TA的精华主题

TA的得分主题

发表于 2014-12-31 20:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
csucjk 发表于 2014-12-31 07:42
A-001与A-002 都有上过两次课程,查了来的各只有一个日期,结果不太对!

其实我想要的结果是 下面图这样 ...

6楼语句运行结果:

  1. SELECT T1.员工工号,T1.岗位,T1.课程编号,T2.日期 FROM
  2. (SELECT A.课程编号,A.岗位,B.员工工号 FROM TABLE1 A,
  3. (SELECT DISTINCT 岗位,员工工号 FROM TABLE2) B
  4. WHERE A.岗位=B.岗位)T1
  5. LEFT JOIN
  6. TABLE2 T2
  7. ON T1.岗位=T2.岗位 AND T1.课程编号=T2.课程编号 AND T1.员工工号=T2.员工工号
  8. ORDER BY T1.岗位,T1.员工工号,T1.课程编号
复制代码
2014-12-31_195740.png


8楼语句运行结果:

  1. SELECT T1.员工工号,T1.岗位,T1.课程编号,T2.日期 FROM
  2. (SELECT A.课程编号,A.岗位,B.员工工号 FROM TABLE1 A LEFT JOIN
  3. (SELECT DISTINCT 岗位,员工工号 FROM TABLE2) B
  4. ON A.岗位=B.岗位)T1
  5. LEFT JOIN
  6. TABLE2 T2
  7. ON T1.岗位=T2.岗位 AND T1.课程编号=T2.课程编号 AND T1.员工工号=T2.员工工号
  8. ORDER BY T1.岗位,T1.员工工号,T1.课程编号
复制代码
2014-12-31_200055.png


若然想对记录根据岗位、工号和日期排序(无培训的放最后),且将日期字段以中文日期表示,那么改为:

  1. SELECT T1.员工工号,T1.岗位,T1.课程编号,FORMAT(T2.日期,'M月D日') AS 日期 FROM
  2. (SELECT A.课程编号,A.岗位,B.员工工号 FROM TABLE1 A LEFT JOIN
  3. (SELECT DISTINCT 岗位,员工工号 FROM TABLE2) B
  4. ON A.岗位=B.岗位)T1
  5. LEFT JOIN
  6. TABLE2 T2
  7. ON T1.岗位=T2.岗位 AND T1.课程编号=T2.课程编号 AND T1.员工工号=T2.员工工号
  8. ORDER BY T1.岗位,T1.员工工号,(T2.日期 IS NOT NULL),T2.日期
复制代码
2014-12-31_200822.png

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 04:42 , Processed in 0.038456 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表