映射含两个lkp时lkp override使用及多表关联问题咨询
问题解答
结论
需要关联三张表,关联逻辑全部写在Lookup Override的SQL语句中即可,不需要在Lookup组件额外配置多表关联。
原因说明
你提供的目标查询逻辑需要三张表的匹配数据才能得到正确结果:
- 首先需要通过
Table1 RG和table2 IPF的ID字段关联,拿到你需要输出的IPF.ID值 - 再通过
Table1 RG和table3 DR的SDL_ID字段关联,才能获取到用于聚合的country_name字段 - Lookup Override的作用就是用自定义的SQL查询完全替代Lookup组件默认的单表查询逻辑,所以你SQL中用到的所有表的关联逻辑都要在Override语句里写完整。
注意事项
- 自定义Override SQL的返回字段顺序、字段数据类型必须和Lookup组件中预先定义的输出字段完全匹配,否则会出现执行报错
- 你当前SQL中使用的
listagg是Oracle原生支持的字符串聚合函数,如果使用其他类型的数据源,需要替换为对应数据库的聚合函数,比如MySQL要替换为group_concat
-- 你当前使用的Override SQL可直接使用,已经包含了完整的三表关联逻辑 SELECT IPF.ID,listagg(country_name,',') within group(order by(id)) FROM Table1 RG INNER JOIN table2 IPF ON RG.ID=IPF.ID INNER JOIN table3 DR ON DR.SDL_ID=RG.SDL_ID group by id;
内容的提问来源于stack exchange,提问作者bhagya
相关产品推荐
相关产品推荐

