前言
簡單理解 Inner join、 Left join 的差別。 以及使用經驗分享。
WHY
- 班上國文80分以上,但數學不及格的同學有哪些
- Shiva 的魔法商店中,使用者 Sarah 沒有買過的商品有哪些
WHAT
Left join
會先取得所有的 A,
那如果沒有相對應的 B ,就直接全部塞 null ,
他的邏輯就是抓取,『所有的課(A)加上修課學生的資料(B)』
牛刀小試
Question
- 有修演算法,也有修人機互動課程的同學有哪些(A:演算法名單,B: 人機互動名單)
- 班上國文和數學都80分以上同學有哪些(A:國文80分以上名單,B: 數學80分以上名單)
- 班上國文80分以上,但數學不及格的同學有哪些(A:國文分數表,B: 數學及格的名單)
- 請列出魔法店中,Sarah 已經買過的商品(A:有賣的商品列表, B:Sarah買過的商品列表)
- 請列出魔法店中的所有魔法,並標記 Sarah 還沒買過的商品(A: 魔法店的商品列表, B: Sarah買過的商品)
Answer
- inner join
- inner join
- left exclusive join
- inner join
- left inclusive join
HOW
1 | $magics = ShopMagic::where(['shop_id' => $id]) |