iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0

昨天找出四張表背後的關聯後,
今天我們再JOIN一次,

SELECT *
  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

把一些欄位縮起來後,
跟第三天用直覺JOIN的結果有沒有差別呢?
(至少現在有根有據。最大的差別應該是自信吧!)
https://ithelp.ithome.com.tw/upload/images/20220911/20152049MMGS9CRTKP.jpg

CASE WHEN

偷偷說,
有時候JOIN反而讓我眼睛更花,
以這張表D列來說,你找的到哪裡是"已鎖定"嗎?
E列是不是更一目了然呢?
https://ithelp.ithome.com.tw/upload/images/20220919/20152049KMNerthII4.jpg

由於表內的值實在太相似,
而分類又不多的話,
https://ithelp.ithome.com.tw/upload/images/20220911/20152049EcS6L87lNj.jpg
我就會傾向用CASE WHEN走出自己的風格(?)。

不過還是必須說,
如果太自由,
實在難登上大雅之台,
就只能「孤芳自賞」啦。

我們來試試看吧:

--CASE WHEN格式
CASE 欄位名 
    WHEN '情況一' THEN '結果一'
    WHEN '情況二' THEN '結果二'
    END
SELECT E.BusinessEntityID  'BusinessEntityID'
,E.DepartmentID			   'DepartmentID'
,D.DepartmentID			   'DepartmentID'
,CASE E.ShiftID	
		WHEN '1' THEN 'Day' 
		WHEN '2' THEN 'Evening'
		WHEN '3' THEN 'Night' 
		END as 'ShiftID'
,*
  FROM [HumanResources].[EmployeeDepartmentHistory] E
  JOIN [HumanResources].[Department] D ON E.DepartmentID = D.DepartmentID

https://ithelp.ithome.com.tw/upload/images/20220911/201520495H0DQVUbzA.jpg

明天伏筆

接下來想出一題考考大家,
請試著找出
[Production].[Product]資料表和[Sales].[SalesOrderDetail]
之間的關聯,
並把兩張資料表JOIN起來看看吧~
(不懷好意的警語:題目事有蹊蹺,請小心!)


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

尚未有邦友留言

立即登入留言