tft每日頭條

 > 職場

 > 跨表數據比對分析

跨表數據比對分析

職場 更新时间:2025-04-21 05:16:51

大家好,今日繼續講解VBA數據庫解決方案,今日的内容是第70講: 數據查詢中,三個工作表聯合查詢的方法。在各種查詢中,内連接,左外連接,右外連接等等,這些方法大家在工作中要多加利用,并且靈活利用,利用多了,知識就變成自己的了。今日我們講解的是三個工作表的聯合查詢,也就是說三個工作表的數據要一次查詢。我們還是看下面的實例講解。

實例,我們有三個工作表,工作表"數據3",工作表"數據7",工作表"數據8"數據如下:

跨表數據比對分析(三個工作表聯合查詢的方法)1

跨表數據比對分析(三個工作表聯合查詢的方法)2

跨表數據比對分析(三個工作表聯合查詢的方法)3

我們在上面的三個工作表中以員工編号為線索,要返回三個表的聯合表格,同時字段要全字段,員工編号,姓名,年齡,民族,植樹數量,成活數量,這個代碼要如何寫呢?下面看我的代碼:

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

代碼截圖:

跨表數據比對分析(三個工作表聯合查詢的方法)4

代碼解讀:

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 語句的寫法,大家在複制代碼的時候要注意格式,不可以寫錯。

下面看代碼的運行:

跨表數據比對分析(三個工作表聯合查詢的方法)5

今日内容回向:

1 如何實現三表聯合查詢?

2 三表聯合查詢中是通過什麼來實現的?

,

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

查看全部

相关職場资讯推荐

热门職場资讯推荐

网友关注

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