三、綜合應(yīng)用(1小題,計(jì)30分)
在做本題前首先確認(rèn)在基礎(chǔ)操作中已經(jīng)正確地建立了order_detail表,在簡(jiǎn)單應(yīng)用中已經(jīng)成功地將記錄追加到order_detail表。
當(dāng)order_detail表中的單價(jià)修改后,應(yīng)該根據(jù)該表的"單價(jià)"和"數(shù)量"字段修改
order_list表的總金額字段,現(xiàn)在有部分order_list記錄的總金額字段值不正確,請(qǐng)編寫程序挑出這些記錄,并將這些記錄存放到一個(gè)名為od_mod的表中(與order_list表結(jié)構(gòu)相同,自己建立),然后根據(jù)order_detail表的"單價(jià)"和"數(shù)量"字段修改od_mod表的總金額字段(注意一個(gè)od_mod記錄可能對(duì)應(yīng)幾條order_detail記錄),最后od_mod表的結(jié)果要求按總金額升序排序,編寫的程序最后保存為prog1.prg。
本題主要考核點(diǎn):
程序的建立方法、程序中循環(huán)結(jié)構(gòu)的使用、SQL查詢語句的使用、記錄的修改方法等知識(shí)點(diǎn)
本題解題思路:
第一步:在VisualFoxPro主窗口下按組合鍵Ctrl+N,系統(tǒng)彈出"新建"對(duì)話框,在"文件類型"中選擇"程序",再點(diǎn)擊"新建文件"按鈕,則系統(tǒng)彈出程序編輯窗口;
第二步:在彈出的窗中中輸入以下代碼:
SET TALK ON
SET SAFETY ON
&&計(jì)算出每個(gè)訂單的總金額
SELECT 訂單號(hào),SUM(單價(jià)*數(shù)量) AS 總金額;
FROM ORDER_DETAIL;
GROUP BY 訂單號(hào);
INTO CURSOR CurTable
&&首先應(yīng)該得到每一訂單的總金額。由于同一個(gè)訂單由多種商品組成,所以要求出
&&同一訂單的總金額應(yīng)該將同一訂單所包含的商品合計(jì)在一起,這就作到了SUM函數(shù)
&&其分組的依據(jù)是訂單號(hào)放在ORDER BY子句的后面,將結(jié)果集放入一個(gè)臨時(shí)表CurTable,
&&將臨時(shí)表名CurTable放在INTO CURSOR子句的后面
SELECT ORDER_LIST.*;
FROM ORDER_LIST,CurTable;
WHERE ORDER_LIST.訂單號(hào)=CurTable.訂單號(hào) AND ORDER_LIST.總金額<>CurTable.總金額;
INTO TABLE OD_MOD
&&根據(jù)上面所得到的臨時(shí)表中每一訂單的總金額來得到order_list中不正確的記錄
&&由于要在一個(gè)查詢中用到另一個(gè)表所以要用到查詢,將它們分別放在FROM子句
&&的后面,兩個(gè)表名之間用逗號(hào)隔開;在WHERE子句中放入聯(lián)接的條件和查詢的條件
&& ORDER_LIST.訂單號(hào)=CurTable.訂單號(hào) AND ORDER_LIST.總金額<>CurTable.總金額
&&查詢的結(jié)果集要放入永久表OD_MOD中,將OD_MOD放在INTO TABLE子句的后面
USE OD_MOD
DO WHILE NOT EOF() &&遍歷OD_MOD中的每一條記錄
SELECT CurTable.總金額 FROM CurTable;
WHERE CurTable.訂單號(hào)=OD_MOD.訂單號(hào);
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |