iT邦幫忙

2022 iThome 鐵人賽

DAY 6
0
自我挑戰組

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

[第六天]資料表傳遞的訊息,你get了嗎?

  • 分享至 

  • xImage
  •  

昨天(事有蹊蹺)的小題,
不知道大家有試著做做看嗎?

我們要JOIN的是
[Production].[Product]和[Sales].[SalesOrderDetail],
JOIN之前,我們先找出他們之間的關聯如下:
https://ithelp.ithome.com.tw/upload/images/20220909/20152049F3WlqgDS4Q.jpg

沒有鍵的JOIN

在這邊可以發現:兩張表並沒有「鍵」互相關聯,
只有一個相同的欄位ProductID,
這樣的話該怎麼辦?
這樣還能JOIN嗎?

答案是確認兩個欄位是記錄一樣的事情.
不只是「同名同姓不同意義」的話,
就可以JOIN喔!

來試試看吧,我的語法是

SELECT 
P.ProductID , S.ProductID, * 
FROM [Production].[Product] as P
FULL JOIN [Sales].[SalesOrderDetail] as S
ON P.ProductID = S.ProductID

習慣上,
我會暫時先用"FULL JOIN"可以看到全部的情況,
之後再根據需要的資料修改JOIN的範圍。
不知道有沒有人跟我一樣呢?
(如果大神們有更好的作法,歡迎指教!!)

並將兩表的ProductID先呈現出來,
重複確認兩欄位的值是否一致。
得到的結果:
https://ithelp.ithome.com.tw/upload/images/20220909/20152049NH6fONCqWF.jpg

訊息解讀

這樣一來,我們可以看出一些訊息:
例如,
有些產品只有在[Production].[Product]表中有紀錄,
在[Sales].[SalesOrderDetail]表的值皆為空值,
我們便能由此得知:
這些商品「從來沒有」被訂購過。(嗚嗚滯銷)
https://ithelp.ithome.com.tw/upload/images/20220909/20152049Mg2yL5Vu3o.jpg

這樣的「訊息解讀」
也是我工作前期覺得最困難的地方,
可能銷售部門會要你整理出一份「滯銷商品」報表,
讓他們規劃促銷活動。

這時候我就要將「他的報表條件」翻譯成「以上的語法」,
撈出資料,才能產出報表。

我們的JOIN段落大致就到今天結束了,
可以擺脫JOIN了(嗎?)
明天再來揭曉吧~


上一篇
[第五天]CASE WHEN的自由
下一篇
[第七天]兩步驟寫出子查詢
系列文
資料庫二年級:練習AdventureWorks範例資料庫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言