大家好,我们今天接着讲连接的方式的第二种,左外连接。在上两讲中,我们讲了内连接,并用内连接分别连接数据库和EXCEL进行了实例的应用讲解,我们今日讲解第二种连接:左外联接。

所谓左外联接,是以左表为基准,将两表的数据进行连接,然后将左表没有对应项显示为NULL;换种说法:就是根据左表的记录,在被连接的右表中找出符合条件的记录与之匹配,如果找不到与左表匹配的,用null表示。

左连接特点:左外连接是外连接的一种,将显示全部左边表中的所有项目,即使其中有些项中的数据未填写完全(在右表中没有查找到对应的值)。

为了理解上述的意义,我们还是以实例来讲解,我们今日讲解的是工作表的连接,下一讲是对数据表的讲解:

实例,同样我们仍有两页的工作表如下:

上述数据中,我们注意到在"数据"页中的型号在"数据2"中有些是没有的,有些是有的,我们要返回的是整个"数据"页中的条目,并把每行按照型号进行匹配。有的返回供应商代码,没有的即表示为空值,代码怎么去写呢?下面看我给出的代码:

Sub mynzRecords_58() '第58讲 左外联接

Dim cnADO, rsADO As Object

Dim strPath, strSQL As String

Worksheets("58").Select

Cells.ClearContents

Set cnADO = CreateObject("ADODB.Connection")

Set rsADO = CreateObject("ADODB.Recordset")

strPath = ThisWorkbook.FullName

cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=yes;imex=1';data source=" & strPath

strSQL = "Select a.型号,a.生产厂,a.数量,b.供应商 From [数据$] as a LEFT JOIN [数据2$] as b ON a.型号=b.型号"

rsADO.Open strSQL, cnADO, 1, 3

For i = 1 To rsADO.Fields.Count

Cells(1, i) = rsADO.Fields(i - 1).Name

Next

Range("a2").CopyFromRecordset rsADO

rsADO.Close

cnADO.Close

Set rsADO = Nothing

Set cnADO = Nothing

End Sub

代码截图:

代码讲解:

1 strSQL = "Select a.型号,a.生产厂,a.数量,b.供应商 From [数据$] as a LEFT JOIN [数据2$] as b ON a.型号=b.型号"

上述代码中我们应用了Left join .. on .. 标准的左外连接的语句,(有时也写作left outer join .. on .. )解释如下:

Select a.型号,a.生产厂,a.数量,b.供应商: 表示返回的字段;

[数据$] as a LEFT JOIN [数据2$] as b: 此处定义了[数据$] 为A表, 定义[数据2$]为b表

ON a.型号=b.型号" : 是条件类型

2 Range("a2").CopyFromRecordset rsADO 这句是把数据反馈到工作表中 的固定位置。

下面我们看看代码的运行:

对于没有查找到的数值就是空值的状态了。

今日内容回向:

1 什么是左外连接?

2 左外连接的语法是什么样子的?

open表和closed表_什么是左外连接?左外连接在工作表查询中的应用相关推荐

  1. 凯利公式自动计算表_滚动条不见了?公式不计算了?工作表标签不见了等等,我们怎么办?...

    大家有没有在使用EXCEL的过程中,尤其是由别人发过来的文件,有时候打开后就发现各种不适应,比如滚动条不见了,公式不运行了,计算精度出问题了,单元格的列号怎么不是字母了,怎么变成数字了.....,总之 ...

  2. html表单代码例子_关于React的这些细节,你知道吗?-表单

    在 React 里,HTML 表单元素的工作方式和其他的 DOM 元素有些不同,这是因为表单元素通常会保持一些内部的 state.例如这个纯 HTML 表单只接受一个名称: 此表单具有默认的 HTML ...

  3. cad多个窗口并排显示_你早该这么做!并排查看Excel工作表其实一个小动作就搞定!...

    特别福利:私信发送关键词[福利],年度最全Office办公资源等你免费领哟~ 很多人都知道,有时在屏幕上并排查看起两个文件的内容,是一项非常顺畅和方便的操作-- 省去不少在不同窗口间来回切换的时间! ...

  4. 如何取消excel密码_办公软件操作技巧020:如何给excel工作表设置密码

    在日常工作中,有时我们需要对excel表格内容进行只读保护,即只能查看数据,但不能随意更改数据内容,或者表格制作完成后,为了避免误操作对数据的修改,就可以对excel工作表进行加密保护.今天我们来分享 ...

  5. 交叉表 列字段排序_百度App设计部:四步打造交互设计自查表

    UXD设计研究室 · 百度MEUX外部合作自媒体 设计自查是设计师常用的检验工具,经常以"自查表"形式呈现,可以帮助我们快速遍历设计方案,修正遗漏或不周.善用设计自查,不止可以避免 ...

  6. wordpress表单数据验证_微软发布最大规模周二补丁修复129个漏洞;UPnP协议中的漏洞CallStranger,可导致数据泄露或DDoS攻击...

    维他命安全简讯 10 星期三 2020年06月 [漏洞补丁] 微软发布最大规模的周二补丁程序,共修复129个漏洞 [安全漏洞] UPnP协议中的漏洞CallStranger,可导致数据泄露或DDoS攻 ...

  7. vba工作表重命名_使用带有条件的VBA代码重命名工作表列表

    vba工作表重命名 Renaming of worksheets can be done manually, but it will look like a massive task if there ...

  8. python xlsx 图片_实例11:用Python给Excel所有工作表添加图片

    我们在实例9里面展示了如何批量填写每日出货清单,每一天的清单都是直接复制"出货单模板",然后在其中填入出货产品信息的.openpyxl有一个问题,就是在复制工作表的时候,无法跟着复 ...

  9. vba二维数组初始化_将工作表数据写入VBA数组

    大家好,最近推出的内容是"VBA信息获取与处理"中的部分内容,这套教程面向中高级人员,涉及范围更广,实用性更强,现在的内容是第四个专题"EXCEL工作表数据的读取.回填和 ...

  10. vba 修改access表的链接地址_神奇的VBA编程:禁止修改Excel工作表名称

    职场中经常需要将做好的Excel表格/模板发给他人或者存放在公共路径上共享使用,此时需要禁止别人更改已经设定好的工作表名称.或者某些工作簿中有公式使用了对某些工作表的外部引用,如果工作表名称发生变化, ...

最新文章

  1. ui培训教程分享:平面设计怎样视觉空间感?
  2. JAVA开发:开发属于你的第一个Java程序
  3. 中文文本情感分析-python包SnowNLP入门
  4. Spring Cloud【Finchley】- 21 Spring Cloud Stream 构建消息驱动微服务
  5. 【java学习】常用实体类--String、StringBuffer\StringTokenizer
  6. 让系统通过域用户自动打补丁
  7. RSA签名算法 - Java加密与安全
  8. excel切片器_如何在Excel表格中使用切片器
  9. netty4 收不到服务器响应的数据_Netty模拟redis服务器
  10. 【iOS-Cocos2d游戏开发之二十一 】自定义精灵类并为你的精灵设置攻击帧以及动画创建!【二】...
  11. Golang sync.Mutex 与 sync.RWMutex
  12. 【BZOJ3675】【Apio2014】序列分割
  13. iphone 开发常用代码2
  14. 01-【Cron定时表达式】在线Cron表达式生成器+Cron表达式详解
  15. HTML邮件模板编写规则,编写邮件HTML模板
  16. 计算机描绘的基因结构图,推荐一款好用的基因结构图在线绘制工具!
  17. Linux 下编译出现“ln failed to create symbolic link operation not supported”
  18. php免费开发环境搭建,Windows PHP 开发环境搭建
  19. vue3 组件naiveui报错: Extraneous non-props attributes (class) were passed to component but could not be
  20. mysql 1032_[MySQL] SQL_ERROR 1032解决办法

热门文章

  1. linux 脚本监听,Linux—编写shell脚本监控主机
  2. mimes.php,php – Laravel文件上传验证
  3. electronjs设置宽度_Js操作DOM元素及获取浏览器高宽的简单方法
  4. 二分函数lower_bound()
  5. Linux基础——搭建自己的云计算, 多电脑共享你云端文件
  6. opencv OCR 端到端场景文本检测与识别(webcam_demo) vs2015
  7. mysql read uncomit_mysql配置文件,帮看看
  8. 2017-2018-2 20179215《密码与安全新技术》第七周作业
  9. MySQL Innodb引擎和MyIASM引擎的区别
  10. HEXO+Github,搭建属于自己的博客