[TOC] # 主子报表—通过SQL关联实现 ## **报表效果** ![](https://oscimg.oschina.net/oscnet/up-4fdab7928064bbc8317a3fdea1f9fb4b2b3.gif) ![](https://img.kancloud.cn/71/37/7137f13c4347d019767796dee7427afc_803x30.png) ## **报表设计过程** ### **1. 数据准备** 数据库中新建两张表,一张表名为“zhiwu”,用来存储部门信息;一张表名为“user”,用来存储客户信息数据。两个表的关系是:“user”表的“b\_id”与“zhiwu”表的“id”想对应; **zhiwu表**![](https://oscimg.oschina.net/oscnet/up-4ca0451713b672247b8e84801d20024514a.png) **user表**![](https://oscimg.oschina.net/oscnet/up-dede96e26985e315a796a2ae5c5f0e6ae70.png) ### **2.设计主表数据集** 主表展示的是部门信息,设计步骤如下: * 新建一个能展示部门信息的数据集,输入报表SQL,拼接上参数; ```java 备注: 1、在浏览器查找的时候,主表和子表都可以使用“部门id”作为参数查找, 所以我们可以把拼接的参数写成 id='${pid}',浏览器地址后可以拼接?pid=1这种形式; 2、下图中“pid”是随意定义的,用来浏览器传参使用; ``` ![](https://oscimg.oschina.net/oscnet/up-e67adb09a5a4f3da7b81e76ce85ebc483a8.png) :-: 图7.1 **浏览器查找样式:**![](https://oscimg.oschina.net/oscnet/up-cc4c23ad6ec3d6fcd175860f03438e5955d.png) * 因为部门信息在页面只显示一条数据,所以把图1中“是否列表”对勾去掉; ### **3.设计子表数据集** 子表展示的是部门员工信息,设计步骤如下: * 新建一个能展示部门员工信息的数据集,输入报表SQL,拼接上参数; ```java 备注: 1、在浏览器查找的时候,使用“部门id”作为参数查找, 所以我们可以把拼接的参数写成 b_id='${pid}',浏览器地址后可以拼接?pid=1这种形式; 2、下图中“pid”是随意定义的,用来浏览器传参使用; ``` ![](https://oscimg.oschina.net/oscnet/up-801521f815aaea096639cbef7c1b33f6bb6.png) :-: 图2 * 因为部门信息在页面只显示一条数据,所以把图2中“是否列表”对勾勾选上; ### **4.模板设计** 设计界面样式,拖动数据集到单元格; ![](https://oscimg.oschina.net/oscnet/up-58cbb9f9cbd51009b5b5e2975ce1dafc788.png) ### **5.查看** 在浏览器中输入参数,主子表数据也跟着参数变化而变化;![](https://oscimg.oschina.net/oscnet/up-4fdab7928064bbc8317a3fdea1f9fb4b2b3.gif)