Re: [SQL ] 請問多個相似 Table 串聯查詢如何寫??
我這樣說明好了
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
04/17 16:45, 1F
討論串 (同標題文章)