
# 多个数据源编排
**一个数据API可以包含多个数据源，因此一次API请求可以涉及多个数据源**，例如取第一个数据源查询结果作为第二个数据源的参数。
以MySQL为例说明，假设数据API有数据源1和数据源2，user01是数据源1的数据表和user02是数据源2的数据表，两张表的结构如下：
表1表结构 
| 数据源  | 表名     | 参数                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|
| 数据源1 | user01 | - id（int）  - name（varchar）                                                                                                 |
| 数据源2 | user02 | - user_id（int）  - user_age（int）  - user_sex（varchar）   |
   
数据源SQL设计如下：
数据源1，在表user01中查找name为"zhang"的数据记录id。假设数据源1的返回对象为"default1"。
```
select id from user01 where name='zhang';
```
数据源2，根据user01中找到的id，在user02中找到对应的数据记录user_age。假设数据源2的返回对象为"default2"。
```
select user_age from user02 where user_id=${default1[0].id};
```
其中，${**default1**\[0\].id}为数据源1的查询结果（default1为数据源1的返回对象，id为数据源1的查询字段）。
假设，数据表user01和user02中有如下数据记录：
| user01           || user02                                  |||
|:---|---|:---|---|---|
| **id** | **name** | **user_id** | **user_age** | **user_sex** |
| 1      | zhang    | 2           | 17           | 女            |
| 2      | li       | 3           | 18           | 男            |
| 3      | wang     | 1           | 18           | 男            |
   
则调用该数据API将返回如下响应：
```
{
     "default1":[{
         "id":1
     }],
     "default2":[{
         "user_age":18
     }]
}
```
