# SQL Join
###### tags:`想知道嗎`, `SQL`
---
<!-- ![](https://i.imgur.com/x5KhJ0q.jpg =300x) -->
Sarah 🐘Vegelephant 🐘
蔬食-環保-玩小孩
past: Python
now : PHP
fb id:100001561720922
---
### 併
* WHY
* WHAT
* HOW
---
## WHY
1. 班上國文80分以上,但數學不及格的同學有哪些
2. Shiva 的魔法商店中,使用者 Sarah 沒有買過的商品有哪些
---
## WHAT
![](https://i.imgur.com/ZNsDRog.png)
---
## Left join
會先取得所有的 A,
那如果沒有相對應的 B ,就直接全部塞 null ,
他的邏輯就是抓取,『所有的課(A)加上修課學生的資料(B)』
---
[參考](https://dotblogs.com.tw/brooke/2015/03/15/150726)
---
## HOW
```
$magics = ShopMagic::where(['shop_id' => $id])
->join('magics','shop_magics.magic_id', '=', 'magics.id')
->leftjoin('user_magics', function($join){
$join->where('user_magics.user_id','=', Auth::user()->id)
->on('shop_magics.magic_id', '=', 'user_magics.magic_id');
})
->select('magics.id','magics.name','magics.price','magics.level','user_magics.magic_id')
->get();
```
---
{"metaMigratedAt":"2023-06-15T01:50:00.642Z","metaMigratedFrom":"YAML","title":"SQL Join","breaks":"true","slideOptions":"{\"transition\":\"slide\"}","contributors":"[{\"id\":\"0f4b2677-c241-45c8-bc6c-45fe527d2921\",\"add\":1771,\"del\":762}]"}