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

有方法在 select 中產生-名次欄嗎 ?
前往頁面 1, 2  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> SQL 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
Abel



註冊時間: 2005-03-14
文章: 189
來自: 鹿港小鎮

第 1 樓

發表發表於: 星期五 三月 03, 2006 12:09 pm    文章主題: 有方法在 select 中產生-名次欄嗎 ? 引言回覆

我用 SQL Select 做了一個排名,請問要如何在 select 中產生一欄 名次 也就是 1,2,3… 啦

目前我是產生一個 dbf table 然後再去填入名次,有方法在 select 中一次產生,而不需要
二次加工嗎 ?

求教了,各位大大 … 謝謝。

我有用 搜尋 找 排名,名次 … 沒找到
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
bin1x



註冊時間: 2004-08-27
文章: 462


第 2 樓

發表發表於: 星期五 三月 03, 2006 2:54 pm    文章主題: 引言回覆

我會這麼作說,
SELECT .....ORDER .....INTO DBF FILENAME
用RECNO()來當名次
但同分的處理就不行了
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站 MSN Messenger
Abel



註冊時間: 2005-03-14
文章: 189
來自: 鹿港小鎮

第 3 樓

發表發表於: 星期五 三月 03, 2006 3:20 pm    文章主題: 引言回覆

謝謝 bin1x 我目前就是這樣做,只是覺得有點 …,所以想請問看看是否能直接在 SQL select 中一次產生。

對了在 select ... into table xxx 是產生一個獨立的 dbf ,可有什麼指令(參數)讓這個 dbf 直接就成為
某個 DBC 的 dbf

謝謝您。
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 4 樓

發表發表於: 星期五 三月 03, 2006 5:31 pm    文章主題: 引言回覆

help 說:
------------------
DBF | TABLE TableName
[DATABASE DatabaseName [NAME LongTableName]] stores query results in a table. If you specify a table that is already open and SET SAFETY is set to OFF, Visual FoxPro overwrites the table without warning. If you don't specify an extension, Visual FoxPro gives the table a .DBF extension. The table remains open and active after SELECT is executed.
Include DATABASE DatabaseName to specify a database to which the table is added. Include NAME LongTableName to specify a long name for the table. Long names can contain up to 128 characters and can be used in place of short file names in the database.

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
catjoke



註冊時間: 2003-06-16
文章: 175
來自: 香港

第 5 樓

發表發表於: 星期六 三月 04, 2006 9:05 am    文章主題: 引言回覆

怎也要 二次加工, 因為 RECNO() 是不同的!!

SELECT 0000 AS 名次, * .... ORDER BY 總平均分 INTO TABLE TmpResult

REPLACE ALL 名次 WITH RECNO()

* 因為 原本 1號的 學生不一定是 考第一!!!! 以總平均分 順排後, 才以它的 RECNO() 為 名次!!

另一種做法 則是 預早給 學生成績.dbf 添了一個欄位為 名次:

SELECT 學生成績
SET ORDER TO 總平均分 DESC
GO TOP
Cur名次 = 1
DO
REPLACE 名次 WITH Cur名次
Cur名次 = Cur名次+1
SKIP
WHILE !EOF()


那麼不用 SELECT, 原 table 已是你想要的結果了!

_________________
喵喎~ 貓當然是 "茅" 的嘛! ^0^;
回頂端
檢視會員個人資料 發送私人訊息
Abel



註冊時間: 2005-03-14
文章: 189
來自: 鹿港小鎮

第 6 樓

發表發表於: 星期六 三月 04, 2006 2:22 pm    文章主題: 引言回覆

是的 catjoke 大大,我知道了就是需要「二次加工」才行,感谢。

syntech 大大,谢谢你原来 INTO TABLE xxx database xxxx 就可以直接将 dbf 加入 DBC 中

谢谢,非常感谢。
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
Abel



註冊時間: 2005-03-14
文章: 189
來自: 鹿港小鎮

第 7 樓

發表發表於: 星期一 三月 06, 2006 12:47 pm    文章主題: 引言回覆

各位大大,我發現 SQL select .... Into cursor READWRITE 在 9.0 多了這個參數 readwrite ,經吾人測試 curose 真的就可以 write some thing in it 不過好像只能改 9 筆,當改到第 10筆時就會發現錯誤,請問各位大大是否可以提一提有關這個「參數 READWRITE」,謝謝。
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 8 樓

發表發表於: 星期一 三月 06, 2006 1:11 pm    文章主題: 引言回覆

7.0 就有了.
_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
Abel



註冊時間: 2005-03-14
文章: 189
來自: 鹿港小鎮

第 9 樓

發表發表於: 星期二 三月 14, 2006 5:56 pm    文章主題: 引言回覆

大大啊,
請問這個 參數 是怎麼用的啊,為何只能改 9 筆而已,

是否還有其它的用法?
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
jeff2004



註冊時間: 2005-10-30
文章: 27


第 10 樓

發表發表於: 星期二 三月 14, 2006 10:39 pm    文章主題: 引言回覆

Abel 寫到:
是的 catjoke 大大,我知道了就是需要「二次加工」才行,感谢。

syntech 大大,谢谢你原来 INTO TABLE xxx database xxxx 就可以直接将 dbf 加入 DBC 中

谢谢,非常感谢。


這句不明白啊,xxx是指table_name和database_name嗎?
光into就行了嗎?不用別的函數嗎?
回頂端
檢視會員個人資料 發送私人訊息
Abel



註冊時間: 2005-03-14
文章: 189
來自: 鹿港小鎮

第 11 樓

發表發表於: 星期五 三月 17, 2006 6:26 pm    文章主題: 引言回覆

jeff2004 提到

1. xxx是指table_name和database_name嗎? 「是的」
2. 光into就行了嗎?不用別的函數嗎? 「是的」 用 into table/dbf 就行了
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
Abel



註冊時間: 2005-03-14
文章: 189
來自: 鹿港小鎮

第 12 樓

發表發表於: 星期六 三月 18, 2006 12:36 pm    文章主題: 引言回覆

請問還有大大知道 readwrite 的用法嗎 ?

可否懇請提示呢?
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
朱育興



註冊時間: 2003-08-25
文章: 661
來自: 台中市大里區

第 13 樓

發表發表於: 星期六 三月 18, 2006 2:17 pm    文章主題: 引言回覆

Abel 寫到:
請問還有大大知道 readwrite 的用法嗎 ?

可否懇請提示呢?


您是說在 9.0 下只能改 9 筆嗎?我從沒遇過,我從 7.0 開始就已大量使用 ...INTO CURSOR ... READWRITE 了,沒遇過有 9 筆的限制,想加幾筆就加幾筆,所以不知道您是什麼環境下造成的。

_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
Abel



註冊時間: 2005-03-14
文章: 189
來自: 鹿港小鎮

第 14 樓

發表發表於: 星期六 三月 18, 2006 4:14 pm    文章主題: 引言回覆

謝謝 朱大哥
您真是一語驚醒夢中人,看見您說可以用,我馬上不斷檢查,終於發現原來當初為了要將
「名次欄值」設成「數字」用了以下的方法

.grd_temp3.RecordSource =[Select 0 as 排名, ……… Into Cursor temp3 READWRITE]

然後二次加工填上名次的數字
Scan
n_r = n_r+1
Replace 排名 With n_r
Endscan

於是就出現只能填入 9 筆的錯誤,現在我改成
.grd_temp3.RecordSource =[Select 0000 as 排名, ……… Into Cursor temp3 READWRITE]
就可以填入直到 9999 的數字了。

再次感謝,謝謝。
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
yoncen



註冊時間: 2005-08-29
文章: 33


第 15 樓

發表發表於: 星期五 十二月 04, 2009 8:35 pm    文章主題: 引言回覆

完全可以用一句SQL语法达到目的。例如:

create table test(name varchar(20),num decimal(10,2)
insert into test select 'jack',80
union all select 'john',90
union all select 'eric',80
union all select 'tony',78
union all select 'david',60
go

-- (1)方式1
select *,place = (select count(distinct num) from test where num >= a.num)
from test a
order by place
go

/* 结果
name num place
------------------------------------------
john 90 1
jack 80 2
eric 80 2
tony 78 3
david 60 4
*/

-- (2)方式2
select *,place = (select count(num) from test where num > a.num)+1
from test a
order by place
go

/* 结果
name num place
------------------------------------------
john 90 1
jack 80 2
eric 80 2
tony 78 4
david 60 5
*/

欢迎交流! QQ: 26792368 MSN: yoncen@hotmail.com

_________________
從事企業ERP開發,學會止境,精益求精。
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> SQL 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 1, 2  下一頁
1頁(共2頁)

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


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