找回密码
 立即注册

QQ登录

只需一步,快速开始

LukeLiu
超级版主   /  发表于:2019-11-8 17:56  /   查看:6877  /  回复:2
本帖最后由 LukeLiu 于 2019-12-24 13:54 编辑

在活字格经常会用到主子表,主子表一般是主表一行数据对应子表多行的数据,简称为一对多关系。
举个例子,公司表为主表,公司人员表示子表:

image.png121604613.png image.png651318664.png


为主表速生成页面,有列表页和详情页,查看一项纪录的详情页,可以看到主表当前行关联的所有子表数据:

image.png937792663.png



图中的详情页,是通过表格展示所有的子表数据。

现在想只使用一个单元格展示子表中一个字段的所有数据,该如何实现呢?

我整理出了两个方法:
1. 页面使用TEXTJOIN()公式的方法
2. 创捷视图的方法

面使用TEXTJOIN()公式的方法:
在主表的详情页面,隐藏区域里设置子表关联,这样打开主表详情页的时候,可以通过表格获取所有的子表数据,然后在详情页面设置一个TEXTJOIN()公式,连接子表的某一个字段,子表的这列所有数据被TEXTJOIN()公式连在了一起,效果如图。

image.png187799986.png image.png753859557.png


创捷视图的方法:
参考这个教程帖子里提到的group_concat,这里:一看就会,超有用活字格技能:五十四,SQLite中的聚合函数https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=54390&fromuid=55752(出处: 葡萄城产品技术社区)
通过创建一个视图,让主表左联子表,通过group_concat拼接一条主表记录对应的多条子表记录,记为一个新的字段。

  1. with cto as
  2. (
  3. SELECT 公司表.id as ID,名称,地址,人员名称 FROM "公司表"
  4. left join "公司人员表" on 公司表.id= 公司表_ID
  5. )

  6. SELECT ID,名称,地址, group_concat(人员名称) as 人员 FROM cto group by 名称 ;
复制代码


视图效果:
image.png217982176.png

之后,在页面上直接引用视图的这个字段就可以了:

image.png481222838.png image.png44744261.png










2 个回复

倒序浏览
wengMQ悬赏达人认证
银牌会员   /  发表于:2019-11-13 15:57:18
沙发
回复 使用道具 举报
Simon.hu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2019-11-13 19:06:21
板凳
好好学习天天向上
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部