暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

VBA SQL 多表连接查询

Excel VBA练习 2021-07-15
3186

连接查询也可以称之为多表连接查询

意思也就是在多表之间指定关系的连接,并且按照指定的条件进行数据查询,也就是组合两个或者多个工作表的数据,其结果通常是一个比较大的表


其语法为

    Select Field From Table1,Table2 Where Table1.Field=Table2.Field

    从语法中翻译来看

      Select 字段名 From 表1,表2 Where 表1.字段名=表2.字段名


      举个小李子

      这个是一份水果表和颜色表,现需要将每个水果的颜色V过来


      使用SQL语句

        strSQL = "Select a.*,b.* From " & strSource & "a," & strSource1 & "b Where a.颜色序号=b.颜色代码"


        这里可能会有小伙伴出现疑问,不是说好的

        表1.字段=表2.字段的么,怎么变成了a.字段=b.字段...

        也就是要按照以下这样写↓

          strSQL = "Select [Sheet1$A1:B5].*,[Sheet1$D1:E5].* From [Sheet1$A1:B5],[Sheet1$D1:E5] Where [Sheet1$A1:B5].颜色序号=[Sheet1$D1:E5].颜色代码"

          在这里由于两个表的表名在重复出现,代码写的不方便且阅读难以理解,我们可以使用表的别名进行简化,所以,我们经常可以在群里见到一些大佬们都是用aabb的写SQL...


          连接查询的Where子句中用来连接多个表的条件被称之为连接条件或者连接谓词

          也就是

            Where a.Field 运算符 b.Field

            运算符有:>,<>,<,<=,>=等

            其中各连接字段类型必须是可比的,但是字段名可以不必相同,列如例子中的"Where a.颜色序号=b.颜色代码"

            可以看得出来这里是一对一的关系,每一行中只与水果表的一行匹配


            我们不难从结果中可以发现

            颜色序号和颜色代码的记录都是一样的,我们只需要一个记录就可以了

              strSQL = "Select a.*,b.颜色 From " & strSource & "a," & strSource1 & "b Where a.颜色序号=b.颜色代码"

              亦或者

                strSQL = "Select a.*,颜色 From " & strSource & "a," & strSource1 & "b Where a.颜色序号=b.颜色代码"


                在来一个简单的例子



                如上图所示,需要将连接班级学员以及学员成绩 得到结果表


                从数据源中不难发现 两个表之间的公共字段为"姓名"字段且是唯一的

                  strSQL = "Select a.*,语文,数学,英语 From " & strSource & "a," & strSource1 & "b Where a.姓名=b.姓名"


                  多对多关系

                  ...

                  算了,明天写


                  示例文件下载

                  链接:https://pan.baidu.com/s/1Lmoo42QwPT6KmW_xXxI0xg

                  提取码:abcd


                  收工!

                  如果小伙伴有好的思路,可以在小编的公众号留言发给小编研究下

                  文章觉得有用,点个赞+在看,你的每一次点赞和转发就是小编原创的动力

                  关注公众号 ↓


                  文章转载自Excel VBA练习,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                  评论