Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-查询/SQL语句

access中join实例详解

时 间:2014-10-20 14:43:05
作 者:缪炜   ID:24010  城市:江阴
摘 要:Access数据库查询SQL中Join的实例详解。
正 文:

 

Join用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

access join共有下面几种类型

·        INNER JOIN: 如果表中有至少一个匹配,则返回行

·        LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行

·        RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行

下面我们来看一下实例

假设我们现在有两张表,一张部门表:

图1

 一张员工信息表:

图2


我们现在通过引用两个表的方式,从两个表中获取数据

该部门有哪些员工,且员工在哪个部门?查询语句如下:

Select 部门表.部门ID, 部门表.部门名称, 员工信息表.员工ID, 员工信息表.员工姓名, 员工信息表.性别, 员工信息表.年龄, 员工信息表.是否在职

FROM 部门表, 员工信息表

Where (((部门表.部门ID)=[员工信息表].[部门ID]));

得到的数据结果会是这样的:

图3


Inner Join的用法:

除了上面的方法,我们也可以使用关键词 JOIN 来从两个表中获取数据。

查询想要部门中的所有员工信息?查询语句如下

Select 部门表.部门ID, 部门表.部门名称, 员工信息表.员工ID, 员工信息表.员工姓名, 员工信息表.性别, 员工信息表.年龄, 员工信息表.是否在职

FROM 部门表

INNER JOIN 员工信息表 ON 部门表.部门ID = 员工信息表.部门ID;

得到数据查询结果会是这样的:

图4


Left join 的用法

我们看到原始表中的数据(图1)一共有6个部门,但现在只显示了4个部门的数据(图4),如果我们需要把所有部门都显示该如何呢?查询语句如下:

Select 部门表.部门ID, 部门表.部门名称, 员工信息表.员工ID, 员工信息表.员工姓名, 员工信息表.性别, 员工信息表.年龄, 员工信息表.是否在职

FROM 部门表

left JOIN 员工信息表 ON 部门表.部门ID = 员工信息表.部门ID;

得到查询结果会是这样的:

图5

我们看到查询的结果,如果员工信息表中没有对应的部门的员工信息,那将会以空显示。

LEFT JOIN 关键字会从左表那里返回所有的行,即使在右表中没有匹配的行。

Right join 的用法:

看了left join的用法后,我们再来测试right join 的用法相对来说就方便多了。我们还是一样来看一下原始表的数据,原始表中员工信息表中(图2)一共有9个,但现在只显示了8个(图4),如果我们需要把所有的员工信息都显示该如何呢?查询语句如下:

Select 部门表.部门ID, 部门表.部门名称, 员工信息表.员工ID, 员工信息表.员工姓名, 员工信息表.性别, 员工信息表.年龄, 员工信息表.是否在职

FROM 部门表

right JOIN 员工信息表 ON 部门表.部门ID = 员工信息表.部门ID;

得到的结果如下:

图6

 我们看到上面的查询结果,如果部门表中并没有对应的部门信息,那将会以空显示。

RIGHT JOIN 关键字会从右表  那里返回所有的行,即使在左表中没有匹配的行。

 点击附件下载

备注:在我们实际的使用中,我们建议大家尽量少使用left join 与right join ,因为在测试中发现,在数据量大的情况下,查询速度会变慢。



Access软件网官方交流QQ群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助