搜索
写经验 领红包
 > 娱乐

左外连接的关键字是什么(左外连接和左连接的区别)

导语:什么是左外连接?左外连接在工作表查询中的应用

大家好,我们今天接着讲连接的方式的第二种,左外连接。在上两讲中,我们讲了内连接,并用内连接分别连接数据库和EXCEL进行了实例的应用讲解,我们今日讲解第二种连接:左外联接。

所谓左外联接,是以左表为基准,将两表的数据进行连接,然后将左表没有对应项显示为NULL;换种说法:就是根据左表的记录,在被连接的右表中找出符合条件的记录与之匹配,如果找不到与左表匹配的,用null表示。

左连接特点:左外连接是外连接的一种,将显示全部左边表中的所有项目,即使其中有些项中的数据未填写完全(在右表中没有查找到对应的值)。

为了理解上述的意义,我们还是以实例来讲解,我们今日讲解的是工作表的连接,下一讲是对数据表的讲解:

实例,同样我们仍有两页的工作表如下:

上述数据中,我们注意到在"数据"页中的型号在"数据2"中有些是没有的,有些是有的,我们要返回的是整个"数据"页中的条目,并把每行按照型号进行匹配。有的返回供应商代码,没有的即表示为空值,代码怎么去写呢?下面看我给出的代码:

Sub mynzRecords_58() '第58讲 左外联接

Dim cnADO, rsADO As Object

Dim strPath, strSQL As String

Worksheets("58").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.型号,a.生产厂,a.数量,b.供应商 From [数据$] as a LEFT JOIN [数据2$] 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

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

End Sub

代码截图:

代码讲解:

1 strSQL = "Select a.型号,a.生产厂,a.数量,b.供应商 From [数据$] as a LEFT JOIN [数据2$] as b ON a.型号=b.型号"

上述代码中我们应用了Left join .. on .. 标准的左外连接的语句,(有时也写作left outer join .. on .. )解释如下:

Select a.型号,a.生产厂,a.数量,b.供应商: 表示返回的字段;

[数据$] as a LEFT JOIN [数据2$] as b: 此处定义了[数据$] 为A表, 定义[数据2$]为b表

ON a.型号=b.型号" : 是条件类型

2 Range("a2").CopyFromRecordset rsADO 这句是把数据反馈到工作表中 的固定位置。

下面我们看看代码的运行:

对于没有查找到的数值就是空值的状态了。

今日内容回向:

1 什么是左外连接?

2 左外连接的语法是什么样子的?

本文内容由小涵整理编辑!