VBA-一些查询实例(access)

Option Explicit
Sub chanxun()

     Dim con As New ADODB.Connection  '声明并创建连接对象
     Dim rs As New ADODB.Recordset    '声明并创建记录集对象
      con.Open "provider=microsoft.ace.oledb.12.0;data source=" & ThisWorkbook.Path & "\学生管理.accdb"
     Dim sql As String
     'sql = "select * from 学生,课程,成绩 where 学生.学号=成绩.学号 and 课程.课程代码=成绩.课程代码"
    'sql = "select 学生.学号,姓名,课程.课程代码,课程名称,成绩 from 学生,课程,成绩 where 学生.学号=成绩.学号 and 课程.课程代码=成绩.课程代码"
     'sql = "select 课程名称,avg(成绩) as 平均成绩 from 课程,成绩 where 课程.课程代码=成绩.课程代码 group by 课程名称"
     '内连接
     'sql = "select 课程名称,avg(成绩) as 平均成绩 from 课程 inner join 成绩 on 课程.课程代码=成绩.课程代码 group by 课程名称 having avg(成绩)>=85"
     '外连接
    'sql = "select 姓名,性别,职称,院系.院系编号,院系名 from 导师 left join 院系 on 导师.院系编号=院系.院系编号"
    'sql = "select 姓名,性别,职称,院系.院系编号,院系名 from 导师 right join 院系 on 导师.院系编号=院系.院系编号"
    'sql = "select 姓名,性别,职称,院系.院系编号,院系名 from 导师 full outer join 院系 on 导师.院系编号=院系.院系编号"
     '自连接
     'sql = "select * from 员工 t1 inner join 员工 t2 on t1.姓名=t2.姓名"
    'sql = "select distinct t1.编号,t1.姓名,t1.年龄,t1.部门 from 员工 t1 inner join 员工 t2 on t1.姓名=t2.姓名 where t1.编号<>t2.编号 order by t1.姓名"
     '子查询(嵌套查询)
     'sql = "select 部门,count(*) as 人数 from (select * from 员工 where 年龄>=30) group by 部门"
     'sql = "select 部门 as 所在部门,count(*) as 人数 from 员工 group by 部门 order by 部门"
     '提取出年龄比平均年龄大的员工信息
     'sql = "select 姓名,性别,年龄,职务,部门 from 员工 where 年龄>(select avg(年龄) from 员工)"
     '查询年龄排在5-10 名的员工信息
      sql = "select top 6 姓名,性别,年龄,职务,部门 from 员工  where 年龄 not in( select top 4 年龄 from 员工 order by 年龄)"
     Set rs = con.Execute(sql)
     Dim i As Integer
     For i = 0 To rs.Fields.Count - 1
        Cells(1, i + 1) = rs.Fields(i).Name
     Next
     Range("A2").CopyFromRecordset rs
     Columns.AutoFit
     rs.Close: Set rs = Nothing
     con.Close: Set con = Nothing
End Sub

可以试着改一下,试着查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值