问题 问答题

在考生文件夹下有王资数据库WAGE3,包括数据表文件:ZG(仓库号C(4),职工号C(4),工资N(4))
设计一个名为TJ3的菜单,菜单中有两个菜单项“统计”和“退出”。
程序运行时,单击“统计”菜单项应完成下列操作:检索出工资低于本仓库职工平均工资的职工信息,并将这些职工信息按照仓库号升序。在仓库号相同的情况下再按职工号升序存放到EMPl文件中,该数据表文件和ZC数据表文件具有相同的结构。
单击“退出”菜单项,程序终止运行。
(注:相关数据表文件存在于考生文件英下)

答案

参考答案:菜单的建立、结构化查询语言(SQL)中的联接查询、查询的排序,临时表的概念,查询结果的去向等知识。

解析:[解题思路]
利用菜单设计器定义两个菜单项,在菜单名称为“统计”,的菜单项的结果列中选择“过程”,并通过单击“编辑”按钮打开一个窗中来添加“统计”菜单项要执行的命令。在菜单名称为“退出”的菜单项的结果列中选择“命令”,并在后面的“选项”列中输入以下退出菜单的命令:SET SYSMENU TO DEFAULT
“统计”菜单项要执行的程序:
首先是打开数据库文件OPNE DATABASE WAGE3.DBC
我们应该得到每一个仓库的职工平均工资,并将结果放在一个临时的表CurTable中。利用以下语句可以实现:SELECT仓库号,AVG(工资)AS Avg GZ FROM ZG GROUP BY仓库号INTO CURSOR CurTable。这样就生成了一个表名为CurTable的临时表。表中有两个字段:仓库号,Avg GZ,内容为每一个仓库的仓库号和所对应的职工的平均工资。
有了临时表Cur Table后我们可以将其与ZG进行联接查询,我们这里联接查询的目的不是为了得到临时表中的内容做为结果的一部分,而是要用其中的字段Avg GZ做为查询的条件。我们便可以得到“工资小于或低于本仓库职工平均工资的职工信息”的查询:SELECT ZG*FROMZG,CurTable WHERE ZG.仓库号=CurTable.仓库号AND ZG.工资<Cur Table.Avg GZ.利用ORDER BY子句来实现查询结果的排序:ORDER BY仓库号,职工号;利用INTOTABLE子句可以实现查询结果的去向:INTO TABLE EMP1。完整的查询语句如下:SELECTZG.* FROM ZG, CurTable WHERE ZG.仓库号=CurTable.仓库号AND ZG.工资<Cur Table.Avg GZ ORDER BY仓库号,职工号INTO TABLE EMP1。

填空题
问答题 简答题