(1)将order_ detaill表中的全部记录追加到order- detail表中,然后用SQL SELECT语句完成查询:列出所有订购单的“订单号”、“订购日期”、“器件号”、“器件名”和“总金额”(按“订单号”升序,“订单号”相同再按“总金额”降序

admin2017-03-29  26

问题 (1)将order_ detaill表中的全部记录追加到order- detail表中,然后用SQL SELECT语句完成查询:列出所有订购单的“订单号”、“订购日期”、“器件号”、“器件名”和“总金额”(按“订单号”升序,“订单号”相同再按“总金额”降序),并将结果存储到results表中(其中“订单号”、“订购日期”、“总金额”取自order list表,“器件号”、“器件名”取自order_ detail表)。
(2)打开modil.prg命令文件,该命令文件包含3条SQL语句,每条SQL语句中都有一个错误,请改正(注意:在出现错误的地方直接改正,不可以改变SQL语句的结构和SQL短语的顺序)。

选项

答案(1)步骤1:在命令窗口执行命令: SELECT* FROM order detaill INTO ARRAY temp INSERT INTO order detail FROM ARRAY temp 将detaill表中的记录全部复制到detail表中。 步骤2:在命令窗口执行如下SQL命令语句完成查询: SELECT order list.订单号,order list. 订购日期, order detail.器件号,order detail.器件名,order list.总金额; FROM 订货管理!order list INNER JOIN 订货管理!order detail; ON order list.订单号=order detail.订单号; ORDER BY order list.订单号,order list.总金额DESC; INTO TABLE results.dbf (注意:以上SQL语句是根据查询文件生成的,大家也可以通过查询设计器完成本题操作。) SQL简单查询。 (2)步骤1:在命令窗口执行命令: MODIFY COMMANDmodil,打开modil程序文件,文件中的命令代码如下: &&所有器件的单价增加5元 UPDATE order detaill SET单价WITH单价+5 &&计算每种器件的平均单价 SELECT器件号,AVG(单价)AS平均价FROM order detaill ORDER BY器件号INTO CURSQR lsb &&查询平均价小于500的记录 SELECT*FROM lsb FOR平均价<500 修改程序中的错误行,修改后的程序如下: UPDATE order detaill SET单价=单价+5&&UPDATE 语句中赋值是通过“=”号,而不是WITH SELECT器件号,AVG(单价)AS平均价FROM order detaill GROUP BY器件号INTO CURSOR lsb &&GROUP BY短语才是分组短语,而ORDER BY短语是用来对查询结果进行排序的SELECT*FROM lsb WHERE平均价<500 &&SELECT的条件短语是WHERE,而不是FOR 步骤2:保存文件修改,在命令窗口执行命令:DO modil.prg,执行程序文件。 SQL的操作功能;SQL分组与计算查询。

解析 (1)本题考查了SQL的简单查询和联接查询。进行联接查询时主要是判断查询输出字段来自哪个数据表(本题都已指明),再正确设置联接条件。
(2)本题考查了SQL更新功能;分组计算查询和简单查询。
第一处错误属于SQL更新命令格式错误,通过SQL命令给字段赋新值是通过“=”号设置的。
第二处错误是分组短语与排序短语混淆了,这也是改错题中经常设置错误的地方。
第三处错误是查询语句的命令格式错误,SQL查询中筛选条件通过WHERE短语指出。
转载请注明原文地址:https://jikaoti.com/ti/Suk0FFFM
0

最新回复(0)