iT邦幫忙

2022 iThome 鐵人賽

DAY 7
0
自我挑戰組

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

[第七天]兩步驟寫出子查詢

  • 分享至 

  • xImage
  •  

記得上課的時候,
總覺得"子查詢"是個酷東西,
怎麼想得到工作後,前輩卻告訴我「非必要別用」,
為什麼要我放棄這個酷東西(吶喊~)。

讓我們一起重新認識這個神祕的酷東西吧!

這是子查詢

從"AdventureWorks範例資料庫"裡我們可以試試用子查詢來練習,
題目是:
[Production].[Product] 中有被訂購的商品。
(「被訂購」即表示有訂單資料,
因此我們可以從[Sales].[SalesOrderDetail]進行判別是否有訂購紀錄)。

步驟一:先寫出「子」(設定範圍)

範圍:有被訂購的商品->訂單明細(至少有訂單編號)

--有被訂購的商品ID
SELECT ProductID 
FROM [Sales].[SalesOrderDetail] D

https://ithelp.ithome.com.tw/upload/images/20220911/20152049jEphA4fGn5.jpg
觀察一下,發現有重複的,
(編號707未免太熱銷!)
再整理成:
(不整理也沒關係,其實不影響)

SELECT ProductID 
FROM [Sales].[SalesOrderDetail] D
GROUP BY ProductID--重複的不列出

結果會變成:
https://ithelp.ithome.com.tw/upload/images/20220911/20152049mnSetOb0Mx.jpg

步驟二:放入IN的範圍

選出[Production].[Product]產品列表

在上列範圍的產品ID、品名

SELECT * 
FROM [Production].[Product] 
WHERE ProductID --帶入子查詢範圍
IN (SELECT ProductID FROM [Sales].[SalesOrderDetail] D GROUP BY ProductID)

https://ithelp.ithome.com.tw/upload/images/20220911/20152049VXCffVc4Xm.jpg
小發現:原來編號707是安全帽。

是不是~
不覺得子查詢是個討人喜歡的酷東西嗎?
但是為什麼被說「非必要別用」呢?
莫非,
有比這酷東西更好用的工具?

明天我們一起來揭曉看看吧!


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

尚未有邦友留言

立即登入留言