昨天找出四張表背後的關聯後,
今天我們再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的結果有沒有差別呢?
(至少現在有根有據。最大的差別應該是自信吧!)
偷偷說,
有時候JOIN反而讓我眼睛更花,
以這張表D列來說,你找的到哪裡是"已鎖定"嗎?
E列是不是更一目了然呢?
由於表內的值實在太相似,
而分類又不多的話,
我就會傾向用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
接下來想出一題考考大家,
請試著找出
[Production].[Product]資料表和[Sales].[SalesOrderDetail]
之間的關聯,
並把兩張資料表JOIN起來看看吧~
(不懷好意的警語:題目事有蹊蹺,請小心!)