---
order: 2
---
# 关联填充规则

## 用法

选择模型右键-设置关联填充规则

![关联填充规则示例](../images/fill-relation-rules-dialog.png)

## 功能介绍

SuperPage中控件不具备查询数据能力，只能将数据集的数据直接查询并填充到控件，相比之下仪表板和报表可是设置浮动区域在控件上对模型分组、嵌套关联查询。

SuperPage 增加了一个概念[关联填充规则](./关联填充规则.md)，用来解决浮动控件中使用了多个模型，且上下级模型之间数据应该关联关系的问题

## 注意事项

1. 关联填充规则虽然定义在模型上，但是其生效的必要条件是要在浮动控件中使用了多个模型，比如用两个并列的列表分别查询`企业基本信息`和`企业主要人员`，不会作用两者的关联填充规则，在上级浮动面板中展示`企业基本信息`，内部用列表查每个企业的`企业主要人员`，才会作用两者的关联填充规则

## 主键自动关联

两个模型中其中之一的主键在另一个模型中有同名字段，就会用同名字段关联，可以是多个字段。如`企业基本信息`和`企业主要人员` 都有`企业内部序号`且该字段是`企业基本信息`的主键字段，不需要再手动定义填充规则，设计器中模型右键-设置关联填充规则。

`企业基本信息` 与`企业投资关系`没有主键相关同名字段，需要手动定义关联填充规则。

## 自动根据主查询结果过滤其他查询

默认会启用此选项。
`企业基本信息`上级，`企业投资关系`在下级，会先查询`企业基本信息`的数据，根据查询出来的企业过滤`企业投资关系`，前面说了，SuperPage数据集不在外部做表间关联查询(join)。查询的sql 如下:

```sql
select field1,field2 from 企业投资关系 where 投资企业内部序号 in ('id1','id2','id3')
```

id1,id2,id3 是企业基本信息表的查询结果。当SuperPage的设计者明确知道上级查询的企业id是全量的企业数据，此时默认依然拼一个巨大的in条件的sql就不是理想结果，可以取消勾选此选项来优化查询。不影响界面效果。

## 使用场景

1. 浮动面板`企业基本信息`，内部用列表查`企业投资关系`显示每个企业投资的企业，手动定义关联填充规则`[企业基本信息].[企业内部序号]=[企业投资关系].[投资企业内部序号]`
2. 浮动面板`企业基本信息`，内部用列表查`企业投资关系`显示投资本企业的个人和企业，手动定义关联填充规则`[企业基本信息].[企业内部序号]=[企业投资关系].[被投资企业内部序号]`
3. 浮动面板`企业基本信息`，内部用列表查`企业主要人员`显示每个企业主要人员，主键自动关联
4. 社区显示问题列表时，希望能同时列出“我点赞过”的状态，手动定义关联填充规则`[问题表].[问题ID]=[点赞表].[点赞对象ID]`
