联合查询时数据重复显示_数据表查询时,左外连接的写法及应用

大家好,我们今天接着讲左外连接,今日讲左外连接在数据表中的应用。对于数据而言,有的放在EXCEL文件中,我们称之为工作表;有的放在数据库中,我们称之为数据表。两者都是数据的存储方式,这也是我在本书中着重讲解的两种数据连接的原因。并不是说数据库就一定是什么数据存储的高级设备,我们工作中最常接触的EXCEL也可以作为数据库来对应的,对于左外连接而言,我在上讲详细的介绍了和EXCEL工作表连接的应用,今日我将讲解这种连接和数据表连接的应用。

实例,我们还是用第57讲内容的数据表数据,在mydata2中的数据如下:

3c54216adba5d61b7e9ff318626aaa4f.png

在mydata中的数据如下:

5de74b1a929764baf19a2a1d26517684.png

我们要知道在数据库mydata2中的所有员工分红情况,这个时候就可以用左外连接了。下面看我给出的代码:

Sub mynzRecords_59() '第59讲 左外连接应用于两个数据表的讲解

Dim cnADO, rsADO As Object

Dim strPath, strSQL As String

Worksheets("59").Select

Cells.ClearContents

Set cnADO = CreateObject("ADODB.Connection")

Set rsADO = CreateObject("ADODB.Recordset")

strPath = ThisWorkbook.Path & "mydata2.accdb"

strTable = "员工信息"

cnADO.Open "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & strPath

strSQL = "SELECT a.员工编号,a.姓名,a.性别,b.金额 FROM " _

& "员工信息 AS a LEFT JOIN [MS Access;Pwd=;Database=" & ThisWorkbook.Path _

& "mydata.accdb;].员工分红 AS b ON a.员工编号 = b.员工编号"

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

ActiveSheet.Columns(rsADO.Fields.Count).NumberFormatLocal = "¥#,##0.00;¥-#,##0.00"

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

End Sub

代码截图:

0e0426d093f50c32c63a6cfe54586e1c.png

代码解读:

1 不知大家注意到否,上述代码和内连接第57讲内容比较,我只是把上面的INNER换成了LEFT.

2 我们需要注意的是这种连接方式的SQL语句的写法:strSQL = "SELECT a.员工编号,a.姓名,a.性别,b.金额 FROM " _

& "员工信息 AS a LEFT JOIN [MS Access;Pwd=;Database=" & ThisWorkbook.Path _

& "mydata.accdb;].员工分红 AS b ON a.员工编号 = b.员工编号"

其中的连接第二个数据库的结构大家要千万注意,由于在之前的57讲中我详细的讲过了不再多说,这里只是提醒大注意:在写代码的时候尽可能不要去书写,而是复制和修正,这样会让你的代码会更容易些。

好了,下面看代码的运行:

51c3ca1efb0b55a30ae3af30992d61db.png

今日内容回向:

1 左外连接和内连接返回的结果有什么不同?

2 左外连接连接数据表和工作表的方式有什么不同?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值