使用 Access SQL INNER JOIN查询
时 间:2021-06-17 12:51:59
作 者:杨雪 ID:42182 城市:南京
摘 要:使用 Access SQL INNER JOIN查询。
正 文:
INNER JOIN (也称为等效联接)是最常用类型的联接。 此联接通过匹配表之间共有的字段值来从两个或多个表中检索行。 联接的字段必须具有相似的数据类型,不能联接"备注"或"OLE 对象"数据类型。
若要构建 INNER JOIN 语句,请在 SELECT 语句的 FROM 子句中使用 INNER JOIN 关键字。
本示例使用 INNER JOIN 构建一个包含所有具有发票的客户以及这些发票的日期和金额的结果集。
SELECT [Last Name], InvoiceDate, Amount
FROM tblCustomers INNER JOIN tblInvoices
ON tblCustomers.CustomerID=tblInvoices.CustomerID
ORDER BY InvoiceDate
请注意,表名称由 INNER JOIN 关键字进行划分,关系比较位于 ON 关键字之后。 对于关系比较,也可以使用 <、>、<=、>= 或 <> 运算符,还可以使用 BETWEEN 关键字。 还要注意,两个表中的 ID 字段只能在关系比较中使用;它们不是最终结果集的一部分。
若要进一 步限定 SELECT 语句,可以在 ON 子句中的联接比较之后使用 WHERE 子句。
以下示例将结果集缩小为仅包括日期为 2020 年 1 月 1 日之后的发票。
SELECT [Last Name], InvoiceDate, Amount
FROM tblCustomers INNER JOIN tblInvoices
ON tblCustomers.CustomerID=tblInvoices.CustomerID
WHERE tblInvoices.InvoiceDate > #01/01/2020#
ORDER BY InvoiceDate
当必须联接多个表时,可以嵌套 INNER JOIN 子句。 以下示例以上一个 SELECT 语句为基础建立结果集,而且还通过为 tblShipping 表添加 INNER JOIN 来包括每个客户所在的城市和省/市/自治区。
SELECT [Last Name], InvoiceDate, Amount, City, State
FROM (tblCustomers INNER JOIN tblInvoices
ON tblCustomers.CustomerID=tblInvoices.CustomerID)
INNER JOIN tblShipping
ON tblCustomers.CustomerID=tblShipping.CustomerID
ORDER BY InvoiceDate
请注意,第一 个 JOIN 子句括在括号中,以保持它在逻辑上与第二 个 JOIN 子句分隔开。 也可以通过在 FROM 子句中使用第二个表名称的别名将表与其自身联接。 假设要查找所有具有重复姓氏的客户记录。 可以通过为第二个表创建别名“A”并且检查不同的名字完成此操作。
SELECT tblCustomers.[Last Name],
tblCustomers.[First Name]
FROM tblCustomers INNER JOIN tblCustomers AS A
ON tblCustomers.[Last Name]=A.[Last Name]
WHERE tblCustomers.[First Name]<>A.[First Name]
ORDER BY tblCustomers.[Last Name]
OUTER JOIN
想象两个表彼此挨着:一个表在左边,一个表在右边。 LEFT OUTER JOIN 选择右表中符合关系比较条件的所有行,同时从左表中选择所有行,即使右表中不存在匹配项。 RIGHT OUTER JOIN 恰好与 LEFT OUTER JOIN 相反;右表中的所有行都被保留。
例如,假设要确定已开给每个客户的发票总额,但如果某个客户没有发票,希望通过显示单词"NONE"来说明这种情况。
SELECT [Last Name] & ', ' & [First Name] AS Name,
IIF(Sum(Amount) IS NULL,'NONE',Sum(Amount)) AS Total
FROM tblCustomers LEFT OUTER JOIN tblInvoices
ON tblCustomers.CustomerID=tblInvoices.CustomerID
GROUP BY [Last Name] & ', ' & [First Name]
上一个 SQL 语句中实现了三项操作。 第一是使用字符串连接运算符“&”。 此运算符允许您将两个或多个字段作为一个字符串联接在一起。 第二是使用直接 if (IIf) 语句,该语句用于检查合计是否为空。 如果为空,则该语句返回“NONE”。 如果合计不为空,则返回值。 最后是使用 OUTER JOIN 子句。 使用 LEFT OUTER JOIN 保留左表中的行,以便能够看到所有客户(即使这些客户没有发票)。
OUTER JOIN 在多表联接中可以嵌套在 INNER JOIN 内,但 INNER JOIN 不能嵌套在 OUTER JOIN 内。
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)
- 分享一下Access工程中的acw...(11.07)