iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0
自我挑戰組

資料庫二年級:練習AdventureWorks範例資料庫系列 第 3

[第三天]一年級總複習1--JOIN靠直覺?

  • 分享至 

  • xImage
  •  

昨天我們安裝了"AdventureWorks範例資料庫",
這次想使用"AdventureWorks範例資料庫"來練習的主要原因,
是因為我覺得資料庫的資料量還算龐大,
且像我剛進公司一樣,
對每張資料表都陌生無比。

AdventureWorks範例資料庫中的資料表
和公司的資料表,
常常都帶給我那種「初次見面」、「一頭霧水」的傻眼感,
就像下面[HumanResources].[EmployeeDepartmentHistory]這張表,
https://ithelp.ithome.com.tw/upload/images/20220909/20152049cFyT2kkCyw.jpg

滿滿的數字,
卻感覺沒有得到任何資訊,
(內心:我到底看了什麼?)

憑直覺的join

但從左邊的Table名似乎也不難猜,
於是我們來JOIN看看吧!

SELECT 
E.BusinessEntityID         'E.BusinessEntityID'
,B.BusinessEntityID		   'B.BusinessEntityID'
,E.DepartmentID			   'E.DepartmentID'
,D.DepartmentID			   'D.DepartmentID'
,E.ShiftID				   'E.ShiftID'
,S.ShiftID				   'S.ShiftID'
,*
  FROM [HumanResources].[EmployeeDepartmentHistory] E
  JOIN [Person].[BusinessEntity] B ON E.BusinessEntityID = B.BusinessEntityID
  JOIN [HumanResources].[Department] D ON E.DepartmentID = D.DepartmentID
  JOIN [HumanResources].[Shift] S ON E.ShiftID = S.ShiftID

這樣我們能夠得到的Table會變成這樣:
https://ithelp.ithome.com.tw/upload/images/20220909/20152049MUMRzf8DSX.jpg

再把有意義的文字帶入,

SELECT
E.BusinessEntityID         'E.BusinessEntityID'
,B.BusinessEntityID		   'B.BusinessEntityID'
,E.DepartmentID			   'E.DepartmentID'
,D.Name		               'D.DepartmentID'--有意義的欄位Name
,E.ShiftID				   'E.ShiftID'
,S.Name			      	   'S.ShiftID'--有意義的欄位Name
,*
  FROM [HumanResources].[EmployeeDepartmentHistory] E
  JOIN [Person].[BusinessEntity] B ON E.BusinessEntityID = B.BusinessEntityID
  JOIN [HumanResources].[Department] D ON E.DepartmentID = D.DepartmentID
  JOIN [HumanResources].[Shift] S ON E.ShiftID = S.ShiftID

會長這樣:
https://ithelp.ithome.com.tw/upload/images/20220909/20152049Y00XB3kEDR.jpg

是不是有比較進入狀況一點了(吧?)

今天我們先看到這裡,
明天會繼續複習一年級的JOIN,
感謝閱讀,歡迎指教~


上一篇
[第二天]安裝AdventureWorks 範例資料庫
下一篇
[第四天]資料表與表的「關聯性」
系列文
資料庫二年級:練習AdventureWorks範例資料庫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言