• Excel数据库中FullJion功能的实现


    一、数据库中记录串联常用的方法

    1、select … from 表1 inner join 表2 on 条件A

    将符合条件A的表1与表2的记录中的相关字段进行串联

    2、select … from 表1 left join 表2 on 条件A

    以表1中的字段为主,将符合条件A的表2中记录的相关字段与表1中的相关记录串联

    3、select … from 表1 right join 表2 on 条件A

    以表2中的字段为主,将符合条件A的表1中记录的相关字段与表2中的相关记录串联

    4、select …from 表1 full join 表2 on条件A

    将表1、表2中的相关字段筛选出来,并将符合条件A的表1中的相关字段与表2中的相关字段进行串联

    二、问题描述

    以上四种记录中字段串联在Access数据库中都可以实现,但是在Excel数据库中只有前三种可以实现,第4种full join在Excel数据库中不支持,哪有没有什么方法在Excel中实现full join功能呢?

    三、问题分析

    先通过union 将表1和表2中相同字段进行合并,以此记录集作为新的表,然后通过left join(或right join)依次和表1、表2中的其他字段串联,从而实现full join功能。

    sheet1:

    类别

    数量

    金额

    单价

    A1

    1

    10

    100

    A2

    2

    20

    200

    A3

    3

    30

    300

    A4

    4

    40

    400

    A5

    5

    50

    500

    A6

    6

    60

    600

    sheet2:

    类别

    数量

    金额

    库别

    A2

    2

    20

    2

    A3

    3

    30

    4

    A4

    4

    40

    40

    A8

    5

    50

    6

    代码如下:

    Sub Excel数据库实现FullJoin功能()

    Dim conn As Object

    Dim mysql As String

    Dim rst As Object

    Set conn = VBA.CreateObject("adodb.connection")

    mysql = "provider=microsoft.ace.oledb.12.0;extended properties=excel 12.0; data source=E:\学习\vba\数据库\73集\多表查询.xlsx"

    conn.Open mysql

    Set rst = VBA.CreateObject("adodb.recordset")

    mysqlA = "select 类别,数量,金额  from [sheet1$] union select 类别,数量,金额 from [sheet2$]"

    mysqlB = "select 表1.*,[sheet1$].单价 from (" & mysqlA & ") as 表1 left join [sheet1$] on 表1.类别=[sheet1$].类别"

    mysqlC = "select 表2.*,[sheet2$].库别 from (" & mysqlB & ") as 表2 left join [sheet2$] on 表2.类别=[sheet2$].类别"

    mysql = "select * into [FullJoin表] from (" & mysqlC & ")"

    rst.Open mysql, conn, 3, 1

    conn.Close

    Set rst = Nothing

    Set conn = Nothing

    End Sub

    代码执行结果如下(FullJoin表):

    类别

    数量

    金额

    单价

    库别

    A1

    1

    10

    100

     

    A2

    2

    20

    200

    2

    A3

    3

    30

    300

    4

    A4

    4

    40

    400

    40

    A5

    5

    50

    500

     

    A6

    6

    60

    600

     

    A8

    5

    50

     

    6

  • 相关阅读:
    HarmonyOS 3.1 API9 集成认证服务提示client id or secret error.
    元宇宙会成为IPv6的拐点吗?
    Python社区医疗服务平台的设计与实现毕业设计源码221707
    WebRTC GCC 拥塞控制算法(REMB-GCC)
    一文搞清各种来源的wmts服务加载,告别ctrl+c,v
    拼多多商品详情API接口接入流程如下:
    【Flutter】记住,永远都不要在 Flutter 中使用全局变量
    leetcode82-Remove Duplicates from Sorted List II
    在centos中注册gitlab runner
    Spring Cloud Alibaba组件Nacos
  • 原文地址:https://blog.csdn.net/aaron19822007/article/details/126394422