tft每日頭條

 > 職場

 > 内連接查詢和外連接查詢的區别

内連接查詢和外連接查詢的區别

職場 更新时间:2024-07-24 01:20:34

大家好,我們今天接着講連接的方式的第二種,左外連接。在上兩講中,我們講了内連接,并用内連接分别連接數據庫和EXCEL進行了實例的應用講解,我們今日講解第二種連接:左外聯接。

所謂左外聯接,是以左表為基準,将兩表的數據進行連接,然後将左表沒有對應項顯示為NULL;換種說法:就是根據左表的記錄,在被連接的右表中找出符合條件的記錄與之匹配,如果找不到與左表匹配的,用null表示。

左連接特點:左外連接是外連接的一種,将顯示全部左邊表中的所有項目,即使其中有些項中的數據未填寫完全(在右表中沒有查找到對應的值)。

為了理解上述的意義,我們還是以實例來講解,我們今日講解的是工作表的連接,下一講是對數據表的講解:

實例,同樣我們仍有兩頁的工作表如下:

内連接查詢和外連接查詢的區别(什麼是左外連接)1

上述數據中,我們注意到在"數據"頁中的型号在"數據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

代碼截圖:

内連接查詢和外連接查詢的區别(什麼是左外連接)2

代碼講解:

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 這句是把數據反饋到工作表中 的固定位置。

下面我們看看代碼的運行:

内連接查詢和外連接查詢的區别(什麼是左外連接)3

對于沒有查找到的數值就是空值的狀态了。

今日内容回向:

1 什麼是左外連接?

2 左外連接的語法是什麼樣子的?

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关職場资讯推荐

热门職場资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved