Re: [SQL ] 從三個資料表取出記錄

看板Database (資料庫)作者 (會長繞跑了)時間18年前 (2006/09/05 15:02), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
建議你SQL statement最好都在Access裡面完成 也就是不推薦你使用第一種方法 這樣你以後要找存取資料的邏輯 會被分散在VB.NET和Access裡面 你的需求可以使用not exists(或是not in)就可以了 取出 A.地址 中不存在 B.地址 之記錄 => 當作子查詢 SELECT C.地址 FROM C WHERE C.地址 not in( SELECT A.地址 FROM A LEFT JOIN B ON A.地址 = B.地址 WHERE (((B.地址) Is Null)); ) 事實上子查詢也可以用not in來做 只是我懶的打了 而且not in的效率應該是比left join來的好(前提是你的地址要有做索引) 不然Access白吃白吃的應該沒辦法最佳化 ※ 引述《Uihc (我 有我的倔強...)》之銘言: : 資料庫名稱:ACCESS : 資料庫版本:2003 : 內容/問題描述: : 使用的語言是VB.NET : 想請教大家,現在我有三張資料表─在這裡簡稱之為 A、B、C : 這三張資料表都有地址欄位 : 我想要取出的資料步驟如下: : 1.取出 A.地址 中不存在 B.地址 之記錄 = D : →也就是B包含於A,想找出A中扣掉B之後的記錄有那些 : 這個步驟可以正常取出想要的記錄沒有問題,我的語法如下: : (或是有其他更適當的語法?) : SELECT A.地址 : FROM A LEFT JOIN B ON A.地址 = B.地址 : WHERE (((B.地址) Is Null)); : 2.接著要取出 C.地址 中不存在 D.地址 之記錄 = 最終要取得之記錄 : →也就是D包含於C,想找出C中扣掉D之後的記錄有那些 : 現在不知道該如何下手的就是這個部份,主要是不太熟悉VB.NET的資料庫存取方法 : 我的想法有二: : (1) : 我用OleDbDataAdapter去連接資料表,接著就產生DataSet1 : 在產生DataSet1之後,要接著下步驟2,一樣利用OleDbDataAdapter再去連結C資料表 : 但要和DataSet1加入查詢時就不知道該怎麼做下去 : (2) : 就只用一次OleDbDataAdapter去連結三張資料表,然後把Step1和Step2要做的sql : 寫在一起,但寫到前半,step2的部份就不知該怎麼繼續了 >"< : 所以想請各位給我意見或方向~謝謝<(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.169.200

09/05 16:30, , 1F
大感謝!! 果然可以了v( ̄︶ ̄)y
09/05 16:30, 1F
文章代碼(AID): #14_I4XyR (Database)
討論串 (同標題文章)
文章代碼(AID): #14_I4XyR (Database)