Re: [SQL ] 請問多個相似 Table 串聯查詢如何寫??
1. 標準作法是跑4個query,個別查詢
不過asp.net上datasource可以使用別的datasource作為資料來源
也就是說datasourceB/C/D可以設定使用dsA的key作為資料來源
2. 你堅持使用單一query的話
那我上面提到的inner join就不合適了
要用你說的left join拉全部資料
拉完之後,往formB/C/D塞資料時再另外過濾
你說的分類我不懂..
如果是我的話,首選是方法1
要用方法二的話,我會偏好用dataset先過濾再倒到datagrid
如果是侏羅紀時代的遺跡系統(XD)
前端資料來源不能變動的情況下
那就會用datagridview的資料插入事件(rowwilladded?)檢查欄位有沒有值
再決定要不要插入資料
以上提了三種階段(database/datasource/datagrid event)的對應作法
單論複雜度的話,第三種最簡單
缺點是以後會改的很痛苦
不過不需要另行設定dataset(方法二)
或處理datasource(方法一)
請挑你喜歡的服用吧
※ 引述《evantw (安安小成)》之銘言:
: 我這樣說明好了
: A Table 是存放基本資料
: 所以當 使用者輸入一個搜尋條件後 (ex:工號)
: 在 Form 的 A DataGrid 內因該只有一筆
: (基本資料同一工號是不會資料有重複的情況)
: 但 B、C、D 分別是 加班 補修 績效資料
: (同一個工號會有多筆紀錄的可能)
: 所以會有可能 B、C、D 的 DataGrid 內有多筆或沒有的資料
: 我用 select 語法
: select a*,b.B欄位,c.C欄位,d.D欄位
: from ((a left join b on a.欄位Key=b.欄位Key)left join
: c on a.欄位Key=c.欄位Key) left join d on a.欄位Key=d.欄位Key
: where a.欄位Key like '工號';
: 假設使用者輸入的工號是 001,002,003,004 時資料跑出來的型態是
: 欄位key A欄位 B欄位 C欄位 D欄位
: 001 1 AAA AAA
: 001 1 ABC ACC
: 001 1 ACC
: 002 2 BBB BBB DDD
: 002 2 BBA BBA DDD
: 003 3 CCC CCC CCC
: 004 4 DDD
: 因為 B、C、D 同一個工號的人會有存在多筆的關係
: 導致 A Table 欄位的同一個工號基本資料也會有重複顯示很多行
: 我想請問的就是如果像這樣型態的資料
: 我要把資料依序丟到 Form 上的 A、B、C、D DataGrid 內
: A DataGrid 只需顯示 001,002,003,004 各基本資料(因該各只有一筆)
: B、C、D DataGrid 需顯示 001,002,003,004 的資料(可能會有很多筆)
: 如果像 C欄位 001 第三筆的是空白的就跳過!!
: D欄位 001 和 004 都沒有紀錄就不顯示出來!!
: 請問要怎麼分類??
: 是透過 select 做分類??
: 還是要從 Form 上的程式下手呢??
: 希望這樣講解各位能夠明白我所要表達的 =.="
: 謝謝~~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.42.55.46
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 6 之 6 篇):