# 联表查询
---
> 使用 ``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
```
- 序言
- 新手指南
- 安装
- 开发规范
- 目录结构
- 配置
- 路由
- 路由定义
- 路由中间件
- 控制器
- 控制器定义
- 内置showSuccess方法
- 内置ApiException方法
- 参数获取器getParams
- 网络请求器Fetch
- 内置工具函数
- JWT的使用
- 验证
- 验证器
- 验证规则
- 自定义验证规则
- 混合验证规则
- 分场景验证
- 数据库
- 连接数据库
- 查询数据
- 链式操作
- where
- whereOr
- whereBetweenTime
- limit
- page
- count
- order
- field
- alias
- group
- distinct
- 添加数据
- 更新数据
- 删除数据
- 联表查询
- SQL调试
- 模型
- 视图
- 模板渲染(废弃)
- 模板变量(废弃)
- 错误和日志
- 异常处理
- 日志处理
- 命令行
- 扩展库
- 使用Redis
- get
- set
- del
- hget
- hset
- hdel
- decrby
- incrby
- rpush
- rpop
- 使用MongoDB
- 模型
- 新增
- 删除
- 修改
- 查询
- 使用ElasticSearch
- 使用阿里云OSS
- 阿里短信服务
- 微信支付
- 支付宝支付
- 部署
- 更新日志