# 聯表查詢
---
> 使用 ``join()`` 方法可以將多個表關聯起來查詢
該方法接收三個參數
第一個參數指定要關聯的表名,并指定一個別名 如:``role B``
第二個參數指定關聯條件 如:``A.id = B.user_id``
第三個參數指定關聯類型,默認為 `left` 可不傳
> 關聯類型有如下四中模式
* `inier`: 如果表中有至少一個匹配,則返回行
* `left`: 即使右表中沒有匹配,也從左表返回所有的行
* `right`: 即使左表中沒有匹配,也從右表返回所有的行
* `full`: 只要其中一個表中存在匹配,就返回行
更詳細的講解請看這篇文章
> [【MySQL】 left join、right join和join的區別](https://segmentfault.com/a/1190000017369618)
舉個例子,兩個表關聯
```
this.Db('user')
.alias('A')
.join('role B','A.id = B.user_id')
.where('A.id','=',3)
.select()
```
最終的SQL語句為
```
SELECT * FROM `user` AS A LEFT JOIN `role` AS B ON A.id = B.user_id WHERE A.id = 3
```
舉個例子,三個表關聯
```
this.Db('user')
.alias('A')
.join('role B','A.id = B.user_id')
.join('auth C','B.id = C.role_id')
.where('A.id','=',3)
.select()
```
最終的SQL語句為
```
SELECT * FROM `user` AS A
LEFT JOIN `role` AS B ON A.id = B.user_id
LEFT JOIN `auth` AS C ON B.id = C.role_id
WHERE A.id = 3
```