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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小崔2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值