Sql 寫法求救? |
答題得分者是:ccchen
|
a123473119
一般會員 發表:19 回覆:46 積分:18 註冊:2002-08-08 發送簡訊給我 |
1.
Table1(keyno), table2(keyno,name)
keya keya,keyaname
keyb keyc,keycname
keyc
select table1.keyno,table2.name from table1,table2
where table1.keyno=table2.keyno
只會出現二筆(keya,keyaname),(keyc,keycname)
但我希望出現三筆(keya,keyaname),(keyb,),(keyc,keycname)
請教各位前輩,sql該如何寫
2. 客戶編號為 地區(2) 流水碼(4)
ex: LB0001,LB0002, ... LB1201,LB1203,....
如上: LB1202 已被取消
在下次新增客戶時,希望能補入 1202 之流水碼, 而非補最大碼加一
請教各位,如何用sql 快速找出此斷號之編號
而不用先 把 LB之客戶用 Tquery找出來, 再一筆一筆 scan ,判斷其流水
碼,是否有空號,
二個問題,打擾各位了.thanks.
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
1.
Table1(keyno), table2(keyno,name)
keya keya,keyaname
keyb keyc,keycname
keyc
select table1.keyno,table2.name from table1,table2
where table1.keyno=table2.keyno
只會出現二筆(keya,keyaname),(keyc,keycname)
但我希望出現三筆(keya,keyaname),(keyb,),(keyc,keycname)
請教各位前輩,sql該如何寫
這問題必須使用outer join, 然而語法各資料庫都不相同, 你必須說明為何種資料庫
sybase : where table1.keyno*=table2.keyno
Oracle : where table1.keyno=table2.keyno( )
Access: select table1.keyno,table2.name from table1,table2,table1 left join table2 on table1.keyno=table2.keyno
2. 客戶編號為 地區(2) 流水碼(4)
ex: LB0001,LB0002, ... LB1201,LB1203,....
如上: LB1202 已被取消
在下次新增客戶時,希望能補入 1202 之流水碼, 而非補最大碼加一
請教各位,如何用sql 快速找出此斷號之編號
而不用先 把 LB之客戶用 Tquery找出來, 再一筆一筆 scan ,判斷其流水
碼,是否有空號,[/blue] 大概沒什麼好方法, 流水碼你可以選擇用自動新增的欄位型態, again, 依資料庫不同而不同. 問有關資料庫問題最好說明用何種資料庫 發表人 - ccchen 於 2003/01/14 10:15:38
|
a123473119
一般會員 發表:19 回覆:46 積分:18 註冊:2002-08-08 發送簡訊給我 |
感謝 ccchen,我用的是 mysql
斗膽再請教一下:(實在不好意思再開版)
我用來電顯示設備, 當有來電時,我會將電話存於 server 2000 內之 telin
Table 內, 但如何通知各工作站有電話進來,該來讀取此 telin 資料呢,
(來電顯示卡是裝於一台工作站,我寫一支程式一直將資料寫回 telin 內)
我在各工作站之程式內,放一個timer,一直啟動來scan 此 telin Table,
(0.1 秒,一次,因來電就要接,不能等), 但此種作法,會拖垮工作站,幾乎沒法
再作其他事, 有否方法當 server 之 telin table 有新資料進來後, 再通知
各工作站來捉取資料,作處理嗎, 一直 Scan 真的不行.
麻煩您,真不好意思.
|
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
補充:
引言: 2. 客戶編號為 地區(2) 流水碼(4) ex: LB0001,LB0002, ... LB1201,LB1203,.... 如上: LB1202 已被取消 在下次新增客戶時,希望能補入 1202 之流水碼, 而非補最大碼加一 請教各位,如何用sql 快速找出此斷號之編號 而不用先 把 LB之客戶用 Tquery找出來, 再一筆一筆 scan ,判斷其流水 碼,是否有空號是低!!! 觀念如下: 1.將存放客戶編號的table自我連結找出自己沒有的欄位 2.依照編號排序,找出第一筆就是第一個斷行的編號 寫法參考: select no. from A minus select no. from B A=B=客戶table, no.=編號
------
====================== 昏睡~ 不昏睡~ 不由昏睡~ |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
引言: 感謝 ccchen,我用的是 mysql 斗膽再請教一下:(實在不好意思再開版) 我用來電顯示設備, 當有來電時,我會將電話存於 server 2000 內之 telin Table 內, 但如何通知各工作站有電話進來,該來讀取此 telin 資料呢, (來電顯示卡是裝於一台工作站,我寫一支程式一直將資料寫回 telin 內) 我在各工作站之程式內,放一個timer,一直啟動來scan 此 telin Table, (0.1 秒,一次,因來電就要接,不能等), 但此種作法,會拖垮工作站,幾乎沒法 再作其他事, 有否方法當 server 之 telin table 有新資料進來後, 再通知 各工作站來捉取資料,作處理嗎, 一直 Scan 真的不行. 麻煩您,真不好意思.可以嘗試使用 Delphi Indy 網路元件. http://delphi.ktop.com.tw/topic.php?TOPIC_ID=24783 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=24778 /* 使用中文很辛苦,中華男兒當自強 */ 發表人 - Mickey 於 2003/01/14 14:36:42 發表人 - Mickey 於 2003/01/14 14:40:20 |
a123473119
一般會員 發表:19 回覆:46 積分:18 註冊:2002-08-08 發送簡訊給我 |
感謝各位.
測試如下: Mysql 看不懂 select no. from A minus select no. from B
所以流水尋找斷號問題,暫用先捉於query內,再逐筆檢視,還好
1,2秒總能找出
第一個問題:
select table1.keyno,table2.name from table1
left join table2 on table1.keyno=table2.keyno
完全符合所須, 如果 在from table1 後多加 (,table2)
會有 not unique table/alias :table1 error
可能是 table1 內 keyno 非唯一
遺憾是我用的是 delphi 4.0 c/s , 沒有indy 元件
可有其他方法? 真麻煩各位,很不好意思.
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
引言: 遺憾是我用的是 delphi 4.0 c/s , 沒有indy 元件 可有其他方法?應用 FastNet TNMUDP Component 也可以. Sample Code as following: // after receive Telephony and modify database regrading tables. // Broadcast Message and notify orther Client Computer to re-open regrading tables. // This Example use port 7 (echo service) for TNMUDP LocalPort & RemotePort Properties. procedure TForm1.Button1Click(Sender: TObject); var s: array[1..6] of char; begin NMUDP1.RemoteHost := 'x.x.x.255'; // Broadcast on TCP/IP x.x.x Network domain s := 'ReOpen'; NMUDP1.SendBuffer(s,sizeof(s)); end; // ReOpen Data when Received Message. procedure TForm1.NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer; FromIP: String; Port: Integer); var C: array [1..6] of Char; I: Integer; begin if NumberBytes<=6 then begin NMUDP1.ReadBuffer(C, I); if C='ReOpen' then begin // ReOpen TQuery ... end; end; end;/* 使用中文很辛苦,中華男兒當自強 */ |
a123473119
一般會員 發表:19 回覆:46 積分:18 註冊:2002-08-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |