在做本题前首先确认在基础操作中已经正确地建立了order_detail表,在简单应用中已经成功地将记录追加到order_detail表。 当order_detail表中的“单价”修改后,应该根据该表的“单价”和“数量”字段修改order_list表

admin2010-12-13  25

问题 在做本题前首先确认在基础操作中已经正确地建立了order_detail表,在简单应用中已经成功地将记录追加到order_detail表。
    当order_detail表中的“单价”修改后,应该根据该表的“单价”和“数量”字段修改order_list表的“总金额”字段,现在有部分order_list记录的“总金额”字段值不正确,请编写程序挑出这些记录,并将这些记录存放到一个名为od_mod的表中(与order_list表结构相同,自己建立),然后根据order_detail表的“单价”和“数量”字段修改od_mod表的“总金额”字段(注意一个od mod记录可能对应几条order_detail记录),最后od_mod表的结果要求按“总金额”升序排序,编写的程序最后保存为prog1.prg。

选项

答案步骤1:在命令窗口执行命令:MODIFY COMMAND prog1,打开程序文件编辑器。 步骤2:在编辑器中输入如下程序代码: SELECT 订单号,SUM(单价*数量) AS总金额; FROM order_detail; GROUP BY订单号, INTO CURSOR arrtable SELECT order_1ist.*; FROM order_list,arrtable; WHERE order list.订单号=arrtable.订单号 AND order_list.总金额<> arrtable.总金额; INTO TABLE od_mod USE od_mod DO WHILE NOT EOF() SELECT arrtable.总金额 FROM arrtable; WHERE arrtable.订单号=od_mod.订单号; INTO ARRAY arr REPLACE 总金额 WITH art SKIp ENDDO CLOSE ALL SELECT*FROM od_mod ORDER BY总金额; INTO CURSOR arrtable1 SELECT*FROM arrtable1 INTO TABLE od_mod 步骤3:保存文件修改,在命令窗口执行命令:DO prog1.prg,执行程序文件。

解析 本大题主要考查的是SQL分组计算查询;DO WHILE循环结构。本题所设计的程序代码有些难度,需要考生好好掌握。基本解题思路可按以下步骤进行:
    首先,根据order detail表的“单价”和“数量”数据,利用分组计算查询求出每组订单的“总金额”,将结果保存到一个临时表中。
    然后,通过对order list表和临时表的联接查询,找出order list表中“总金额”字段与临时表中“总金额”不相同的记录,并将order list表中这些“总金额”不相同的记录输出到od_mod表中。
    接着利用DO WHILE循环语句对od mod表中的每条记录进行处理。通过SQL查询语句从临时表中先获得与od mod表当前所指记录“订单号”相同的“总金额”字段值,将谊值保存到数组中,再通过REPLACE命令修改od mod表当前记录的值,每处理完一条记录,记录指针便指向下一条记录,一直到处理完od mod表中的所有记录。
    最后将od mod表的记录按“总金额”排序,由于查询结果不能覆盖正在作为查询数据源的表,因此,可以通过一个临时表过渡,保存排序的表记录,再通过临时表将排好序的记录再保存回原数据表中。
转载请注明原文地址:https://kaotiyun.com/show/N4zp777K
0

最新回复(0)