![Access 2016数据库应用与开发:实战从入门到精通(视频教学版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/546/26943546/b_26943546.jpg)
5.5 创建高级查询
本节主要介绍参数查询和交叉表查询这两种高级查询的创建方法,从而实现更为复杂的查询功能。
5.5.1 参数查询
参数查询是动态的,利用对话框要求用户输入参数,然后根据参数搜索到相关的记录,最后呈现在表格中。例如在人事管理系统中,若员工众多,当需要查看一个员工的信息时,往往需要根据员工姓名或者员工ID进行查询。这时就可以创建一个参数查询,在每次运行时会提示用户输入员工的姓名,再根据姓名进行查询。这种人机交互式的查询,就是参数查询。
下面在“工资明细表”中创建一个参数查询,要求输入某一员工的ID,可以查询出该员工的工资情况。具体的操作步骤如下。
步骤1打开随书光盘中的“素材\Ch05\人事管理.accdb”文件,单击【创建】选项卡下【查询】组中的【查询设计】按钮,如图5-90所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0128-0443.jpg?sign=1739306103-Ld4EvLBGBRtLUtHeWHHKvuZbHw7BMtBp-0-d384118c177b53831cfca612b2caa5f3)
图5-90 单击【查询设计】按钮
步骤2此时会进入查询的设计视图,并弹出【显示表】对话框,选择“工资明细表”,单击【添加】按钮,如图5-91所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0128-0444.jpg?sign=1739306103-90xw3Jc0bZyILplplgx1fjDryARdzsQG-0-a669ce49bcd68e4e7fae7c08525e4663)
图5-91 【显示表】对话框
步骤3添加完成后,关闭【显示表】对话框。在查询设计网格中,将“员工ID”字段和“工资明细表.*”添加到【字段】行中,在“员工ID”字段对应的【条件】行中输入查询条件“[请输入员工ID:]”,注意文本两边需要用方括号括起来,如图5-92所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0128-0445.jpg?sign=1739306103-WRy0GIkGhA0h6HZ4S6VATLpNjLt9sGnS-0-d04758d998f4df43f8207edea7ebf34e)
图5-92 添加字段并设置查询条件
步骤4单击【查询工具】→【设计】选项卡下【结果】组的【运行】按钮,如图5-93所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0128-0446.jpg?sign=1739306103-pMGMOxAyOYwYGy2NrgPnW2pmUak0GV1V-0-e53550f602ca47c9baf2d999966e64d7)
图5-93 单击【运行】按钮
步骤5弹出【输入参数值】对话框,假设在【请输入员工ID:】文本框中输入“2017001”,单击【确定】按钮,如图5-94所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0128-0447.jpg?sign=1739306103-xCUyqD3aicJAI1oGacud01nJCbND8QI2-0-52fd3588da8d40804ac246a759ef4e34)
图5-94 【输入参数值】对话框
步骤6即可查询出ID为“2017001”的员工工资情况,如图5-95所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0128-0448.jpg?sign=1739306103-aKYV4af1k8uZ8Rn0tkLBEdTc0jMOcHWO-0-3e76c0d66a44f40d6b45be88318755d1)
图5-95 参数查询的结果
以上是单参数查询,用户也可以创建多参数查询。多参数查询是指设置两个以上的参数进行查询,只需在多个字段的【条件】行中输入参数的表达式,即可完成多参数查询。
5.5.2 交叉表查询
交叉表查询是指将数据水平分组和垂直分组,在水平分组与垂直分组的交叉处显示出统计结果。在创建交叉表查询时,需要指定三种字段:行标题、列标题和交叉值。Access规定,交叉表查询中行标题字段最多可以有3个,列标题字段和交叉值字段只能各有一个。
1.使用查询向导创建交叉表查询
使用查询向导创建交叉表查询时,所需要的字段必须存在于一个表或查询中。下面以“工资明细表”为数据源,查询每位员工实发工资总和。具体的操作步骤如下。
步骤1打开随书光盘中的“素材\Ch05\人事管理.accdb”文件,单击【创建】选项卡下【查询】组中的【查询向导】按钮,如图5-96所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0129-0450.jpg?sign=1739306103-MveZxqcTIUKSj6S5xtzb69ueMqAn0Hwp-0-2a0465f900c2f5d493584b3ec95a4693)
图5-96 单击【查询向导】按钮
步骤2弹出【新建查询】对话框,选择【交叉表查询向导】选项,单击【确定】按钮,如图5-97所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0129-0451.jpg?sign=1739306103-hbzLQxz9m1LA159YPzgotO1qz4kLeCab-0-23ac7159d74c2d0176437e7032beace2)
图5-97 选择【交叉表查询向导】选项
步骤3在对话框中需要选择数据源表,这里选择【表:工资明细表】选项,单击【下一步】按钮,如图5-98所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0130-0453.jpg?sign=1739306103-7WHZdqnWhH6N0YsuzUG9JwhzIu5t9rEO-0-65547ea73dfdcafc800a80dc34b3eb03)
图5-98 选择【表:工资明细表】选项
步骤4在对话框中需要选择作为行标题的字段,最多可以选3个。这里分别选中“员工ID”和“员工姓名”字段,单击【添加】按钮,将其添加到【选定字段】列表框中,然后单击【下一步】按钮,如图5-99所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0130-0454.jpg?sign=1739306103-eMwSauMxHF89p9cXtUqV2r1BloOxQCaX-0-9d9fdb8f0855452f1683cfdefd19b456)
图5-99 选择作为行标题的字段
步骤5在对话框中需要选择作为列标题的字段,只能选择1个。这里选择“发薪日期”字段,单击【下一步】按钮,如图5-100所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0130-0455.jpg?sign=1739306103-puZh0dsQd6QGuqgNAy7vPgpB2A6s6jA3-0-fbbf4d5b2fcc490cc1d8d85a0f62f277)
图5-100 选择作为列标题的字段
步骤6在对话框中需要选择值字段及函数类型。这里在【字段】列表框中选择“实发工资”字段,在【函数】列表框中选择【总数】选项,单击【下一步】按钮,如图5-101所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0130-0456.jpg?sign=1739306103-oG5H4vSJWZYCufurhhHfk0XBeIXKCTPt-0-c2314e4be02b30ec787334a97bfc406f)
图5-101 选择值字段及函数类型
提示
选择“实发工资”字段和【总数】选项表示在表的交叉点显示7月和8月的实发工资,并计算两个月实发工资的总和。
步骤7在对话框中需要为查询指定标题,这里保持默认设置不变,单击【完成】按钮,如图5-102所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0131-0458.jpg?sign=1739306103-BXapdrMTnwEyn69CbAopvQYaUuMEVYuH-0-32b711396df663c37ea6496bcb4d1f58)
图5-102 指定查询的标题
步骤8此时将创建一个交叉表查询,并自动在数据表视图中显示出查询结果。至此,即完成使用查询向导创建交叉表查询的操作,如图5-103所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0131-0459.jpg?sign=1739306103-EUk0Nn70EDOJZZFtWDqmVnWAHijEqPkK-0-2ec9869e00b668f25714d6314033e5a1)
图5-103 交叉表查询的结果
2.使用设计视图创建交叉表查询
使用设计视图同样可以建立交叉表查询,与使用查询向导所不同的是,它可以在一个或多个表中进行创建。下面在“人事管理”数据库中,查询各部门员工的籍贯分布情况。具体的操作步骤如下。
步骤1打开随书光盘中的“素材\Ch05\人事管理.accdb”文件,单击【创建】选项卡下【查询】组中的【查询设计】按钮,如图5-104所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0131-0461.jpg?sign=1739306103-dcvqrCRGap7WMbWIXx44BTkxe1M6aJEe-0-a512772aae78df20aa0b87dc0408f8c3)
图5-104 单击【查询设计】按钮
步骤2此时会进入查询的设计视图,并弹出【显示表】对话框,按住Ctrl键不放,分别选择“部门表”“员工信息表”和“员工原始信息”作为数据源表,单击【添加】按钮,如图5-105所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0131-0462.jpg?sign=1739306103-trAhR7Kl4lNPAEeapJHJwjASEHp1EzNp-0-98a6d5ee81ef0c3340b2b4a74b17edea)
图5-105 【显示表】对话框
步骤3添加完成后,关闭【显示表】对话框。此时在查询的设计视图中可以看到添加的表对象,单击【查询工具】→【设计】选项卡下【查询类型】组的【交叉表】按钮,如图5-106所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0132-0463.jpg?sign=1739306103-MR7jdHTWvaMLejFCljMgSfmblcqPT00W-0-7f39bea53406a229d8cc81129d7883aa)
图5-106 单击【交叉表】按钮
步骤4进入交叉表查询的设计视图,在查询设计网格中,将“部门名称”字段添加到【字段】行中,然后单击【交叉表】右侧的下拉按钮,在弹出的下拉列表中选择【行标题】选项,表示将该字段设置为行标题,如图5-107所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0132-0464.jpg?sign=1739306103-HllVmP0W9fzmgoJIqOURdEb5i7alTy8w-0-3d433654dfe07547ba0ac00368de76ec)
图5-107 添加“部门名称”字段作为行标题
步骤5使用同样的方法,将“籍贯”字段添加到【字段】行中,并将该字段的【交叉表】设置为【列标题】,如图5-108所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0132-0465.jpg?sign=1739306103-vzaw9hZcp5978cLs6QXs2sDS8R1bMsp8-0-c63e6d01bd19b36eed6465faaf084446)
图5-108 添加“籍贯”字段作为列标题
步骤6将“员工ID”字段添加到【字段】行中,单击该字段对应的【总计】右侧的下拉按钮,在弹出的下拉列表框中选择【计数】选项,如图5-109所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0132-0466.jpg?sign=1739306103-s8boSR14Kl2HSUkERdlos6qhARvBpIzj-0-0854cd700788f21644e140d2b96bba19)
图5-109 选择【计数】选项
提示
【总计】下拉列表中的选项是Access提供的预定义函数,表示对查询结果进行统计计算。其中,Group By为默认选项,表示分组;合计表示统计字段值的总和;计数表示统计记录的记录数;StDev表示计算字段值的标准偏差值;First表示返回该字段的第一个值;Last表示返回最后一个值;Expression表示在字段中自定义计算公式。注意不同数据类型的字段,使用的函数是不同的。
步骤7将“员工ID”字段的【交叉表】设置为【值】,然后在【字段】行的第4列中输入“人数总计:[员工ID]”,将该字段的【总计】设置为【计数】,【交叉表】设置为【行标题】,如图5-110所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0133-0469.jpg?sign=1739306103-BLakvkZF303GMD2veh3mmcXzMe3itlBm-0-b750c52737b8286b7b05d81779147356)
图5-110 添加第4个字段
提示
“人数总计:[员工ID]”需要按照“行名:[统计字段名]”这一格式手动输入,这个格式是固定的。
步骤8设置完成后,单击【查询工具】→【设计】选项卡下【结果】组的【运行】按钮,如图5-111所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0133-0470.jpg?sign=1739306103-R3FAKQUtEAXoqqodN7nZ2x7BF0NRaB1K-0-120b6bbe6ea64fca1eb45b7af5af11bc)
图5-111 单击【运行】按钮
步骤9执行交叉表查询,查询结果如图5-112所示。
![](https://epubservercos.yuewen.com/8E4B8E/15367246505321206/epubprivate/OEBPS/Images/Figure-0133-0471.jpg?sign=1739306103-jzXi0xkQlKK9jG7PCanQWDvMh5qx6L5H-0-d1b9793e1a90e6ea2fdde91a271a753c)
图5-112 交叉表查询的结果