全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:863
推到 Plurk!
推到 Facebook!

SQL 查詢指令

尚未結案
carter6
初階會員


發表:53
回覆:108
積分:42
註冊:2002-12-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-22 13:52:18 IP:218.170.xxx.xxx 未訂閱
大家好 我的問題是 我有三個資料庫 A 出貨資料  B 客戶資料   key 客戶編號 C 聯絡人資料 key 聯絡人編號    我要顯示的欄位是    出貨單號 客戶名稱 聯絡人名稱     但是出貨裡的資料 客戶編號和聯絡人編號有可能是空白 請問 在 Query 下要怎麼寫呢?                               Carter
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-22 14:27:45 IP:203.95.xxx.xxx 未訂閱
select a.出貨單號, b.客戶名稱, c.聯絡人名稱 from 出貨資料 a, 客戶資料 b, 聯絡人資料 c where a.客戶編號 *= b.客戶編號 and b.聯絡人編號 *= c.聯絡人編號 試試看吧. 我推測的, 若不正確的話, 請你將 table 的欄位 post上來.
carter6
初階會員


發表:53
回覆:108
積分:42
註冊:2002-12-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-22 14:45:31 IP:218.170.xxx.xxx 未訂閱
首先謝謝你的解答!! 我的出貨資料有 出貨單號 客戶編號 聯絡人編號 客戶資料有 客戶編號 客戶名稱 聯絡人資料有 聯絡人編號 聯絡人名稱 我是這樣寫的 select a.出貨單號, b.客戶名稱, c.聯絡人名稱 from 出貨資料 a, 客戶資料 b, 聯絡人資料 c where ((a.客戶編號 = b.客戶編號) or (a.客戶編號 is null)) and ((a.聯絡人編號 = c.聯絡人編號) or (a.聯絡人編號 is null)) 因為卡在我的客戶編號或是聯絡人編號有可能有一個是空值 但是我寫的不能用 您的寫法 select a.出貨單號, b.客戶名稱, c.聯絡人名稱 from 出貨資料 a, 客戶資料 b, 聯絡人資料 c where a.客戶編號 *= b.客戶編號 and b.聯絡人編號 *= c.聯絡人編號 可是空值的地方資料會錯誤 不知道有什麼辦法可以解決~~ Carter
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-22 15:00:13 IP:61.30.xxx.xxx 未訂閱
你好: 你的問題跟這個問題差不多,都是因為資料表設計不當。 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=39280     PK 是關聯資料庫中的重要鍵值,你可以在你的表格中新增一 個 PK 欄位,以此欄位作為維護資料的依據。    
carter6
初階會員


發表:53
回覆:108
積分:42
註冊:2002-12-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-22 15:07:07 IP:218.170.xxx.xxx 未訂閱
但是我後面有加 Order By 出貨單號 Desc 您的 PK 是這個意思嗎? 我用 Access 當資料庫 用 ADOQuery 去聯
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-10-22 15:55:45 IP:61.30.xxx.xxx 未訂閱
你好: PK (主鍵) 是一個具有唯一性的資料欄位。 請參考這篇文章 http://www.fatac.com/V1/dbsql/dbsql200104.htm    
carter6
初階會員


發表:53
回覆:108
積分:42
註冊:2002-12-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-10-22 16:57:22 IP:218.170.xxx.xxx 未訂閱
但是我本來就有在 Access 的出貨資料 設主索引 您是指這個嗎??
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-10-22 17:12:08 IP:61.30.xxx.xxx 未訂閱
你好: 我說的是客戶資料與聯絡人資料的 PK 鍵。 我誤會你的意思了。Sorry < src="http://sourceprovide.deepen.com.tw/K_Top/bp.gif">
carter6
初階會員


發表:53
回覆:108
積分:42
註冊:2002-12-16

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-10-22 17:21:56 IP:218.170.xxx.xxx 未訂閱
您好: 客戶資料與聯絡人資料 的 PK 值 客戶資料 是 客戶編號 聯絡人資料 是 聯絡人編號 客戶資料之所以沒和聯絡人資料串是因為某些原因(客戶原有的問題) 所以有什麼方式去下 Sql 比較好呢? Carter
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-10-22 17:24:38 IP:61.30.xxx.xxx 未訂閱
你好: 提供你參考 Select 出貨單號, 客戶名稱, 聯絡人名稱  From (出貨資料  LEFT JOIN 客戶資料 On 出貨資料.客戶編號 = 客戶資料.客戶編號) Left Join 聯絡人資料 On 出貨資料.聯絡人編號 = 聯絡人資料.聯絡人編號;    
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-10-22 18:04:38 IP:203.95.xxx.xxx 未訂閱
HI, 若是 聯絡人編號 是在出貨資料中的話, 就修改一下, 試試: select a.出貨單號, b.客戶名稱, c.聯絡人名稱 from 出貨資料 a, 客戶資料 b, 聯絡人資料 c where a.客戶編號 *= b.客戶編號 and a.聯絡人編號 *= c.聯絡人編號
carter6
初階會員


發表:53
回覆:108
積分:42
註冊:2002-12-16

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-10-23 10:24:39 IP:218.170.xxx.xxx 未訂閱
ha0009版主的可以用! 謝謝啦!! 也謝謝 timhuang 的回應 請問 timhuang 裡的 * 是什麼作用呢?? Carter
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-10-23 13:00:31 IP:203.95.xxx.xxx 未訂閱
關於 *= 的下法就是類似 left (outer) join 的語法, 當然對應於 right (outer) join 的語法就是 =* 囉. 了解嗎?
carter6
初階會員


發表:53
回覆:108
積分:42
註冊:2002-12-16

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-10-23 15:19:34 IP:218.170.xxx.xxx 未訂閱
謝謝!! 我了解了!
系統時間:2024-05-19 6:57:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!