sql 两个表联合查询_数据查询中,三个工作表联合查询的方法

791510c84a7577ff4e632df8bce1f397.png

大家好,今日继续讲解VBA数据库解决方案,今日的内容是第70讲: 数据查询中,三个工作表联合查询的方法。在各种查询中,内连接,左外连接,右外连接等等,这些方法大家在工作中要多加利用,并且灵活利用,利用多了,知识就变成自己的了。今日我们讲解的是三个工作表的联合查询,也就是说三个工作表的数据要一次查询。我们还是看下面的实例讲解。

实例,我们有三个工作表,工作表“数据3”,工作表“数据7”,工作表“数据8”数据如下:

28392ed015a4be49209ace34f60b427e.png

a139dad03afde441f33cbabc65912d35.png

c4a48c7936bdea810299eafdb2a9ea45.png

我们在上面的三个工作表中以员工编号为线索,要返回三个表的联合表格,同时字段要全字段,员工编号,姓名,年龄,民族,植树数量,成活数量,这个代码要如何写呢?下面看我的代码:

Sub mynzRecords_70() '第70讲 三表查询SQL

Dim cnADO, rsADO As Object

Dim strPath, strSQL As String

Worksheets("70").Select

Cells.ClearContents

Set cnADO = CreateObject("ADODB.Connection")

Set rsADO = CreateObject("ADODB.Recordset")

strPath = ThisWorkbook.FullName

cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=yes;imex=1';data source=" & strPath

strSQL = "select A.员工编号,B.姓名,B.年龄,C.民族,A.植树数量,A.成活数量" _

& " from [数据3$] as A,[数据7$] as B,[数据8$]" _

& " as C where A.员工编号=B.员工编号 and B.员工编号=C.员工编号 group by " _

& "A.员工编号,B.姓名,B.年龄,C.民族,A.植树数量,A.成活数量"

'打开记录集

rsADO.Open strSQL, cnADO, 1, 3

For i = 1 To rsADO.Fields.Count

Cells(1, i) = rsADO.Fields(i - 1).Name

Next

'提出数据

Range("a2").CopyFromRecordset rsADO

'释放内存

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

End Sub

代码截图:

55681eb257d6a0b2902fb534a9c856e4.png

代码解读:

1 上述代码就是要联合数据3工作表、数据7工作表、数据8工作表,通过A.员工编号=B.员工编号 and B.员工编号=C.员工编号量实现三表联合查询

2 strSQL = "select A.员工编号,B.姓名,B.年龄,C.民族,A.植树数量,A.成活数量" _

& " from [数据3$] as A,[数据7$] as B,[数据8$]" _

& " as C where A.员工编号=B.员工编号 and B.员工编号=C.员工编号 group by " _

& "A.员工编号,B.姓名,B.年龄,C.民族,A.植树数量,A.成活数量"

上述SQL 语句就是实现三表联合查询的代码。

3 上述查询中需要注意的是后面的group by 语句的写法,大家在复制代码的时候要注意格式,不可以写错。

下面看代码的运行:

b4ed09a4e0b4b378ad128848390d3d4d.png

今日内容回向:

1 如何实现三表联合查询?

2 三表联合查询中是通过什么来实现的?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值