# 联表查询
---
> 使用 ``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
```