Re: [SQL ] 請問多個相似 Table 串聯查詢如何寫??
資料表情況假設是
TableA
欄位A 欄位Key
1 001
2 002
3 003
4 004
Table B
欄位key B欄位
001 AAA
001 ABC
001 ACC
002 BBB
002 BBA
003 CCC
Table C
欄位key C欄位
001 AAA
001 ACC
002 BBB
002 BBA
003 CCC
004 DDD
Table D
欄位key D欄位
002 BBB
002 BBA
003 CCC
我用了 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
002 BBB
002 BBA
003 CCC
004 DDD
請問有什麼方式可以變成在 a Table 上同一筆欄位Key僅顯示一次
欄位key A欄位
001 1
002 2
003 3
004 4
C Table 上第三筆空白處不顯示跳過呢
欄位key C欄位
001 AAA
001 ACC
002 BBB
002 BBA
003 CCC
004 DDD
這部分是還要從 select 語法處修改嗎??
還是從 Form 程式碼上做程式的判斷呢??
請各位能否給個提示
謝謝~~
※ 引述《Piceman (派斯麵)》之銘言:
: 推文竟然要等240秒...
: 先假設你知道怎麼安排查詢結果到各表單中
: 你需要的會是
: select a.*, b.*, c.*,d.*
: from tablea as a, tableb as b, tablec as c, talbed as d
: on a.key=b.key ....
: where a.data_key='key_value'
: 大概是這樣的語法
: 關鍵字請查(inner/left) join
: ※ 引述《evantw (安安小成)》之銘言:
: : 資料庫內有 4個 Table
: : 其 A Table 為存放基本資料
: : 其 B、C、D Table 與 A 之間彼此用 Data_Key(工號) 欄位串聯
: : 在 A Table 每個 Data_key 只有一筆
: : 而 B、C、D Table 存放的內容分別是 加班、請假、績效
: : 所以會存在同 Table 內同一個 Data_key 有多筆情況
: : 且這 4個 Table 彼此欄位上有些欄位命名會相同重複
: : 現在我目前需要做一個查詢系統
: : 讓使用者在欄位上打上 Data_Key (工號) 後相關資料
: : 基本資料 + 加班紀錄 + 請假紀錄 + 績效紀錄 同時出現
: : 目前在程式的 Form 內分別也放了 4個 Table 來顯示這 4個 Table 查詢的結果
: : 而目前我的作法就很傳統的
: : 先用 Data_key 查完基本資料並顯示在 Form Table 上後
: : 再依序個別查詢 加班、請假、績效 的 Table
: : 我想了解的是有沒有辦法可以一次串聯查出這 4個 Table 後
: : 分別可以顯示在 Form 上 4個 Table 上
: : (在資料庫的這 4 個 Table 欄位上會有幾個是名稱是重複的)
: : 如果有說明不清楚的可回復告知
: : 謝謝各位~~
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 58.99.68.46
討論串 (同標題文章)