VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

請教各位高手下面3種方法去加名次出來答案是一模一樣但是檔案大小運算速度卻有差別

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
sthuang66



註冊時間: 2014-04-27
文章: 178


第 1 樓

發表發表於: 星期三 九月 16, 2015 9:05 am    文章主題: 請教各位高手下面3種方法去加名次出來答案是一模一樣但是檔案大小運算速度卻有差別 引言回覆

表A有下列数据:
name no
aa  99
bb  56
cc  56
dd  77
ee  78
ff  76
gg  78
ff  50
-------------------------------------- 名次生成方式 , no重複時保留名次空缺
Name no rank
--------------- ----------------- -----------
aa 99.00 1
ee 78.00 2
gg 78.00 2
dd 77.00 4
ff 76.00 5
bb 56.00 6
cc 56.00 6
ff 50.00 8
A方法
SELECT * FROM A ORDER BY no DESC INTO TABLE C
ALTER table C ADD rank n(4)
UPDATE C SET rank=(select COUNT(a.name)+1 from C as a WHERE a.no>C.no)
B.方法
Select * From A Order By NO Desc Into Cursor rr
Select *,Recno() As rank From rr Into Cursor qq Readwrite
nNO=0
For i=1 To Reccount()
Go i
If NO=nNO
Skip -1
nRank=Rank
Go i
Replace Rank With nRank
ENDIF
nNO=NO
Endfor
COPY TO abc

C.方法
SELECT *,(SELECT COUNT(no) FROM b WHERE no> A.no)+1 AS RANK FROM b A ORDER BY RANK INTO TABLE DDD
----------------------------------------------
以上表A是舉例!實際上排名次有五千多筆
上面方法算出內容是完全相同
檔案大小:C>A>B
運算速度:B最快,A和C相近
程式精簡度:C>A>B

運算速度不同是可以理解因為以上三種方法邏輯不一樣
但是檔案大小不同就難理解!新生成名次欄位相同內容也一樣!
煩請板上高手解惑開示!
回頂端
檢視會員個人資料 發送私人訊息
ckp6250



註冊時間: 2004-07-30
文章: 1645


第 2 樓

發表發表於: 星期三 九月 16, 2015 9:54 am    文章主題: Re: 請教各位高手下面3種方法去加名次出來答案是一模一樣但是檔案大小運算速度卻有差別 引言回覆

sthuang66 寫到:

但是檔案大小不同就難理解!新生成名次欄位相同內容也一樣!


您把三個方案出來的 table
modi stru 看看,
結構是否完全一樣?
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
sthuang66



註冊時間: 2014-04-27
文章: 178


第 3 樓

發表發表於: 星期三 九月 16, 2015 4:03 pm    文章主題: 引言回覆

感謝ckp6250指教
果然是structure 問題!應該是用select或是update 等SQL語法自動帶出來的新欄位RANK 其中Nunber比較多位(印象中跟第一個欄位數有關)所以檔案較大
B方法直接指定N(4)所以最小!當大家用modi stru 後檔案大小就一致了
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作