两个表里数组字段的映射关联

编辑
  • 文档创建者:zsh331
  • 浏览次数:2708次
  • 编辑次数:7次
  • 最近更新:Kevin-s 于 2019-06-17
  • 1. 描述

    有时,在新建数据集过程中,可能会遇到这样的需求:将2个表进行数组字段的映射关联,形成一个最终表。一般情况下,可以直接通过表与表之间通过 JOIN 关联实现,但如果某个字段以数组存在时,JOIN 方法就不好处理了。

    如图:表1、表2

    实现效果:



    2. 思路

    1)在 MySQL 数据库中通过 group_concat() 函数与 find_in_set() 函数结合实现。

    2)在 SQL Server 数据库中通过 stuff() 函数与 charindex() 函数结合实现。


    3. 示例(一)

    MySQL 版本:5.5.28

    在 MySQL 中实现,SQL 脚本如下:

    select a.*, group_concat(lesson) as LESSONNAME from t2 a, t1 b where find_in_set(b.id, lessonid) group by name



    4. 示例(二)

    SQL Server 版本及运行环境:Microsoft SQL Server 2012 - 11.0.2100.60 (X64)  Feb 10 2012 19:39:15  Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 

    在 SQL Server 中实现,SQL 脚本如下:

    ;with tb as ( select a.*, lesson as lessonname from t2 a, t1 b where charindex(','+b.id+',',','+lessonid+',')>0 ) select id,name,lessonid, [val]=stuff( (select ',' +[lessonname] from tb as kb where kb.id = ka.id for xml path('')),1,1,'') from tb as ka group by id,name,lessonid

    注:上述实现方案仅供参考,实际情况可再此基础上进一步延伸。


    附件列表


    主题: 报表应用
    标签: 暂无标签 编辑/添加标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]