Access/VBA/Excel-13-巢狀查詢
系統:Windows 7
軟體:Excel 2010 / Access 2010
- 這個系列開展一個新的篇章,重點關注Access資料庫
- 主體框架:以Excel作為操作介面,Access作為資料庫
- 今天講講巢狀查詢:需要先從表1獲取資訊1,再以資訊1去表2獲取最終資訊2
- 涉及知識:
ADO
,SQL:Select
Part 1:題目
- 獲取張三,李四的數學成績
- 已知條件:資料庫中有兩個表(學生資訊表,成績表),如下圖
- 邏輯過程:從學生資訊表中獲取張三/李四的學號,從成績表中以學號查詢滿足條件的數學成績
學生資訊表
成績表
Part 2:程式碼
Sub test()
Dim cnn As New ADODB.Connection '連線
Dim rs As New ADODB.Recordset
Dim SQL As String
Dim tblName
Dim dbAddr
dbAddr = ThisWorkbook.Path & "\學生資訊.accdb"
tbl1Name = "學生資訊表"
tbl2Name = "成績表"
'連線資料庫
With cnn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Open "Data Source=" & dbAddr
End With
op1Filds = "學號"
search1C = "姓名 in ('張三','李四')"
SQL1 = "Select " & op1Filds & " from " & tbl1Name & " where (" & search1C & ")"
op2Filds = "學號,年級,數學成績"
search2C = "學號 in (" & SQL1 & ")"
SQL2 = "Select " & op2Filds & " from " & tbl2Name & " where (" & search2C & ") order by 學號 asc,年級 desc"
Set rs = cnn.Execute(SQL2)
Dim sht
Dim fildNum
Set sht = ThisWorkbook.Worksheets("示例")
sht.Cells.ClearContents
fildNum = rs.Fields.Count
For j = 0 To fildNum - 1 Step 1
fildName = rs.Fields(j).Name
sht.Cells(1, j + 1) = fildName
Next j
sht.Cells(2, 1).CopyFromRecordset rs
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Sub
程式碼截圖
執行結果
Part 3:部分程式碼解讀
-
核心SQL:
Select 學號,年級,數學成績 from 成績表 where (學號 in (Select 學號 from 學生資訊表 where (姓名 in ('張三','李四')))) order by 學號 asc,年級 desc
- 中文釋義:
- 兩層Select,內層獲取張三/李四的學號,外層以學號檢索需要的資訊
- 輸出排序:第一級排序以學號升序(asc),第二級排序以年級降序(desc)
核心SQL
思考:輸出的資訊中不含有姓名資訊,看起來不清晰,那麼如何將姓名資訊加進來呢?和之前的left join結合嗎?
本文為原創作品,如需轉載,可加小編微訊號learningBin
以上為本次的學習內容,下回見
如發現有錯誤,歡迎留言指出
更多精彩,請關注微信公眾號
掃描二維碼,關注本公眾號
相關文章
- 巢狀子查詢巢狀
- 對比SQL中簡單巢狀查詢與非巢狀查詢CFSQL巢狀
- EleasticSearch6.0 巢狀查詢AST巢狀
- MySQL——優化巢狀查詢和分頁查詢MySql優化巢狀
- 巢狀關聯會查詢兩次巢狀
- Mysql 巢狀查詢100例子MySql巢狀
- es中如何使用巢狀物件查詢巢狀物件
- MyBatis(六) sql片段定義、級聯查詢、巢狀查詢MyBatisSQL巢狀
- Mysql中的巢狀子查詢問題QSBSMySql巢狀
- Elasticsearch 7.x Nested 巢狀型別查詢 | ES 乾貨Elasticsearch巢狀型別
- Excel VBA小程式 -使 用VBA實現VLOOKUP函式查詢?Excel函式
- java11新特性—Nest-Based Access Control(巢狀訪問控制)Java巢狀
- java11新特性---Nest-Based Access Control(巢狀訪問控制)Java巢狀
- MyBatis從入門到精通(十二):使用collection標籤實現巢狀查詢MyBatis巢狀
- MyBatis從入門到精通(十):使用association標籤實現巢狀查詢MyBatis巢狀
- VBA驅動SAP GUI自動化:查詢頁面元素FindAllByNameGUI
- 列表巢狀操作巢狀
- vue路由巢狀Vue路由巢狀
- openguass 資料庫狀態查詢資料庫
- SCSS 巢狀屬性CSS巢狀
- SCSS 巢狀規則CSS巢狀
- 展開巢狀列表巢狀
- Locust 任務巢狀巢狀
- Oracle 巢狀表(轉)Oracle巢狀
- 巢狀類遞迴巢狀遞迴
- vue(19)巢狀路由Vue巢狀路由
- Blazor巢狀傳遞Blazor巢狀
- MySQL Join原理分析(緩衝塊巢狀與索引巢狀迴圈)MySql巢狀索引
- html的巢狀規則HTML巢狀
- vue-router 巢狀路由Vue巢狀路由
- JavaScript字串引號巢狀JavaScript字串巢狀
- 封裝多型巢狀封裝多型巢狀
- Python .get 巢狀 JSON 值Python巢狀JSON
- repeater中巢狀放入RadioButtonList巢狀
- 【Qt6】巢狀 QWindowQT巢狀
- nginx 如何實現 if 巢狀Nginx巢狀
- Vue中的巢狀路由Vue巢狀路由
- vue巢狀元件傳參Vue巢狀元件
- 為什麼HTML不能巢狀PHP,而PHP檔案卻可以巢狀HTMLHTML巢狀PHP