iT邦幫忙

2022 iThome 鐵人賽

DAY 5
1
Modern Web

MySQL,我的超人系列 第 5

Day5-帶你從多張表中讀取數據Part2-外連接、自連結

  • 分享至 

  • xImage
  •  

外連結

昨天簡單帶過內連結,相較於其他連結,內連接使用頻率最高、簡單、好理解,外連結分為三種

情境:兩張表,商品(product),庫存(stock),
共通點:商品id===庫存product_id

商品
https://ithelp.ithome.com.tw/upload/images/20220919/2014486593SpNGfq0L.jpg
庫存
https://ithelp.ithome.com.tw/upload/images/20220919/20144865w1DCfNx4KK.jpg

1.左向外LEFT JOIN

https://ithelp.ithome.com.tw/upload/images/20220919/2014486524kkMaQVmJ.png

SELECT * FROM product p LEFT JOIN stock s ON p.id=s.product_id;

https://ithelp.ithome.com.tw/upload/images/20220919/2014486501KNT4rgFj.jpg

2.右向外RIGHT JOIN

https://ithelp.ithome.com.tw/upload/images/20220919/20144865QQjSC0QBZe.png

SELECT * FROM product p RIGHT JOIN stock s ON p.id=s.product_id;

https://ithelp.ithome.com.tw/upload/images/20220919/20144865khLudZeoSv.jpg

3.全連結

https://ithelp.ithome.com.tw/upload/images/20220919/20144865nngSBWXbPH.png

SELECT * FROM 
product p LEFT JOIN stock s ON p.id = s.product_id
UNION
SELECT * FROM 
product p RIGHT JOIN stock s ON p.id = s.product_id;

https://ithelp.ithome.com.tw/upload/images/20220919/20144865kMR7TedFvO.jpg
註:MySQL沒有FULL JOIN,UNION代替

自連結

人員名單(self)
https://ithelp.ithome.com.tw/upload/images/20220919/201448659i2XjzTQ6W.jpg
D,家裡有三位奴隸A、B、C,嘗試將人員名單自連結成奴隸表

SELECT 
s.id,
s.name,
m.name AS salve
FROM self s
LEFT JOIN self m
    ON s.id = m.boss;

奴隸表
https://ithelp.ithome.com.tw/upload/images/20220919/201448652QuoU49Goi.jpg
註1:s、m 同張表,自連結需取不同別名

碎碎念

內容似乎有點少xd,上網查文件看到文件長的像阿婆的臭襪子就好懶得往下滑(雖然官方文件出於嚴謹確實有這個必要),但有時我只是想複習一下連結的語法RRRR,所以大部分只想用簡單易讀的範例...。
ps 不要問我為什麼要用別名,因為我懶

參考圖源

維基百科 左向外、右向外、全連結

預告

Day6-教你從資料表中插入數據


上一篇
Day4-帶你從多張表中讀取數據Part1-內連結
下一篇
Day6-教你從資料表中插入數據-單行、多行
系列文
MySQL,我的超人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言