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巢狀
- Sql Server系列:巢狀查詢SQLServer巢狀
- 資料庫查詢優化:巢狀查詢資料庫優化巢狀
- 資料庫 - 連線查詢、巢狀查詢、集合查詢資料庫巢狀
- MySQL——優化巢狀查詢和分頁查詢MySql優化巢狀
- Mysql 巢狀查詢100例子MySql巢狀
- es中如何使用巢狀物件查詢巢狀物件
- 巢狀關聯會查詢兩次巢狀
- MongoDB之資料查詢(巢狀集合)MongoDB巢狀
- SQL語句巢狀查詢問題SQL巢狀
- MyBatis(六) sql片段定義、級聯查詢、巢狀查詢MyBatisSQL巢狀
- Mysql中的巢狀子查詢問題QSBSMySql巢狀
- MySQL not in巢狀查詢改寫成外連線方式MySql巢狀
- oracle 雜湊查詢與巢狀查詢跟表的先後關係測試Oracle巢狀
- Access查詢實現Mysql的 limit 查詢MySqlMIT
- [冷楓推薦]:資料庫操作,內外聯查詢,分組查詢,巢狀查詢,交叉查詢,多表查詢,語句小結。資料庫巢狀
- Elasticsearch 7.x Nested 巢狀型別查詢 | ES 乾貨Elasticsearch巢狀型別
- Excel VBA小程式 -使 用VBA實現VLOOKUP函式查詢?Excel函式
- Transformation之Subquery Un-nesting(子查詢的非巢狀)SU【六】ORM巢狀
- v$access中查詢呼叫的objectObject
- MyBatis從入門到精通(十):使用association標籤實現巢狀查詢MyBatis巢狀
- MyBatis從入門到精通(十二):使用collection標籤實現巢狀查詢MyBatis巢狀
- less巢狀巢狀
- Datalist巢狀巢狀
- oracle狀態查詢(補)Oracle
- mysql樹狀查詢(轉)MySql
- oracle常用狀態查詢Oracle
- 查詢網路狀態
- thinkphp 資料庫使用巢狀子查詢時,閉包用到外層表別名PHP資料庫巢狀
- Hierarchical Queries 級聯查詢(樹狀結構查詢)
- 關聯查詢時使用樹狀查詢要小心
- java11新特性—Nest-Based Access Control(巢狀訪問控制)Java巢狀
- java11新特性---Nest-Based Access Control(巢狀訪問控制)Java巢狀
- 集合框架-集合的巢狀遍歷(HashMap巢狀HashMap)框架巢狀HashMap
- 集合框架-集合的巢狀遍歷(HashMap巢狀ArrayList)框架巢狀HashMap
- 集合框架-集合的巢狀遍歷(ArrayList巢狀HashMap)框架巢狀HashMap