從A資料表查B資料表首字 |
尚未結案
|
bookworm
中階會員 發表:63 回覆:161 積分:82 註冊:2002-08-03 發送簡訊給我 |
各位前輩:
我有兩個資料表:
A資料表
編號 字
1 的
2 是
3 不 B資料表
詞碼 詞條 首字字碼
1 我們
2 的確 1 我想做的是,查出B.詞條的首字和A.字的對應,然後再算出B.詞條的首字出現了多少漢字。我的做法是用query1讀A,query2讀B,A先跑迴圈,找後B跑迴圈找出首字:
var i, j: integer; begin adoconnection1.Connected := false; adoconnection1.Connected := true; adoquery1.SQL.Clear; adoquery1.SQL.Text := 'select * from A'; adoquery1.Active := true; for i := 1 to adoquery1.RecordCount do begin adoquery2.sql.clear; adoquery2.SQL.Text := 'select * from B'; adoquery2.Active := true; for j := 1 to adoquery2.RecordCount do begin if copy(adoquery2.fieldbyname('詞條').AsString, 1, 2) = adoquery1.FieldByName('字').AsString then begin adoquery2.Edit; adoquery2.FieldByName('首字字碼').AsInteger := adoquery1.FieldByName('編號').AsInteger; end; adoquery2.Next end; adoquery1.next end; showmessage('轉好了'); end;程式沒問題,只是非常非常慢,因為我A的table有5000筆,B的table有6萬筆。不知道有什麼簡易又有效率的寫法?因為我一直覺得我的寫法繞了一大圈,所以來請教各位前輩。謝謝! --- 從問中學 ^^ |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
bookworm
中階會員 發表:63 回覆:161 積分:82 註冊:2002-08-03 發送簡訊給我 |
謝謝兩位前輩這麼快的回應。我用的是access, 試了一下,還是不行。是不是不能將這段SQL command用adoquery1.sql.text或adoquery1.sql.add直接加入呢? Mickey前輩:
(select 編號 from A where 字=substring(B.詞條,1,2))運行出錯了,說是語法錯誤。 timhuang前輩:
會出現left(b.詞條, 1) = a.字 set b.首字字碼 = a.編號 少了運算元。 麻煩前輩再次賜教!
這兩段的SQL讓我受益非常多,尤其是timhuang前輩的,這都是書上很少說的地方,謝謝! ---
從問中學 ^^
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
bookworm
中階會員 發表:63 回覆:161 積分:82 註冊:2002-08-03 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |