Access/VBA/Excel-13-嵌套查询
2018-01-17 22:32
253 查看
微信公众号原文
系统:Windows 7
软件:Excel 2010 / Access 2010
这个系列开展一个新的篇章,重点关注Access数据库
主体框架:以Excel作为操作界面,Access作为数据库
今天讲讲嵌套查询:需要先从表1获取信息1,再以信息1去表2获取最终信息2
涉及知识:
已知条件:数据库中有两个表(学生信息表,成绩表),如下图
逻辑过程:从学生信息表中获取张三/李四的学号,从成绩表中以学号查询满足条件的数学成绩
学生信息表
成绩表
代码截图
执行结果
中文释义:
两层Select,内层获取张三/李四的学号,外层以学号检索需要的信息
输出排序:第一级排序以学号升序(asc),第二级排序以年级降序(desc)
核心SQL
思考:输出的信息中不含有姓名信息,看起来不清晰,那么如何将姓名信息加进来呢?和之前的left join结合吗?
本文为原创作品,如需转载,可加小编微信号
以上为本次的学习内容,下回见
如发现有错误,欢迎留言指出
更多精彩,请关注微信公众号
扫描二维码,关注本公众号
系统: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
以上为本次的学习内容,下回见
如发现有错误,欢迎留言指出
更多精彩,请关注微信公众号
扫描二维码,关注本公众号
相关文章推荐
- Access 在VBA中实现数据导出到Excel
- Office VBA进阶(二):如何在Access 2007里导入一个Excel sheet表
- VBA-常用函数集锦-13-Excel多行或多列删除
- Access 、Excel、Word中的VBA引用C#或VB.Net创建的DLL
- excel和access : No 1 - 使用vba读写
- Access/VBA/Excel-两个表联合查询左连接-11
- Access/VBA/Excel-06-Access记录删除
- vba连接数据 代码 (excel/access/sqlserver)
- Excel VBA讀取Access
- Access/VBA/Excel-12-模糊查询
- Excel VBA access WCF service
- Access/VBA/Excel-单表筛选数据-09
- Access/VBA/Excel-14-消除重复值
- excel,access常用公式函数VBA代码汇总文章
- Access/VBA/Excel-15-表信息整体迁移Select+Insert联动
- Access/VBA/Excel-16- 连接带密码的数据库
- C#执行access中VBA,用VBA导出access表中数据到Excel中
- 利用vba 从excel到access中导入与导出表
- Access 2007/2010 VBA查询结果导出为Excel 2007文件
- 使用VBA访问ACCESS,Excel文件的方法