# 聯表查詢
---
> 使用 ``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
- 阿里短信服務
- 微信支付
- 支付寶支付
- 部署
- 更新日志