Re: [SQL ] 請問多個相似 Table 串聯查詢如何寫??

看板Database作者 (安安小成)時間14年前 (2011/04/17 16:19), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串5/6 (看更多)
我這樣說明好了 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 上的程式下手呢?? 希望這樣講解各位能夠明白我所要表達的 =.=" 謝謝~~ ※ 引述《Piceman (派斯麵)》之銘言: : 我最近在摸php : 所以我用簡略的php語法解釋 : 不過流程應該是類似就是了 : $sql='select a.xx,b.yy,c.zz from xxx'; : $record=sql_query($sql); : $tableA['col1']=$record['a.xx']; : $tableB['col1']=$record['b.yy']; : 雖然在asp.net中 : datagrid透過assign datasource可以對result filter : 或者說安排特定欄位接收查詢結果中指定欄位資料 : 不過那只是上面方法的圖形介面而已 : 做的事情其實是差不多的 : 然後,下次要問的時候問題盡量明確一點.. : (最好後面重點總結一下..) : 如果你是要1key-1row : 那你的問題是在sql語法 : 你可以用inner join試試看 : 刪文時又看到一個空白不要顯示的需求.. : 你可以用on a.key=c.key where c.zz<> '' : 詳細用法請查你用的資料庫語法 : : 我用了 left join 語法將 a,b,c,d Table 連結在一起 : : 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 : : 但是顯示出來的資料如下 : : 欄位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 : : 現在是在程式 Form 上有 4個 Table 個別顯示 a,b,c,d 的資料 : : 就以 a Table 上就會有 A 欄位多筆重複顯示 : : 欄位key A欄位 : : 001 1 : : 001 1 : : 001 1 : : 002 2 : : 002 2 : : 003 3 : : 004 4 : : C Table 上則是 : : 欄位key C欄位 : : 001 AAA : : 001 ACC : : 001 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.99.68.46

04/17 16:45, , 1F
要去form處理,因為table bcd彼此之間並沒有pk..
04/17 16:45, 1F
文章代碼(AID): #1DggAFXH (Database)
討論串 (同標題文章)
文章代碼(AID): #1DggAFXH (Database)