在 Microsoft Access
中,联合查询(也称为 JOIN 查询)是用于从两个或多个相关表中检索数据的一种方法。通过使用联合查询,您可以将来自不同表的数据组合在一起,以便在一个结果集中进行查看和分析。
联合查询的类型
Access 支持几种不同类型的联合查询,包括:
内连接
(Inner Join):返回两个表中满足连接条件的记录。
左连接
(Left Join 或 Left Outer Join):从左表返回所有的记录,以及右表中满足连接条件的记录。如果右表中没有匹配项,则结果集中对应的字段将包含 NULL。
右连接
(Right Join 或 Right Outer Join):与左连接相反,从右表返回所有的记录,以及左表中满足连接条件的记录。
案例:
以上是客户表和订单表,其中CustomerID是共有字段,注意订单表中没有没有CustomerID为3的记录,客户表中没有CustomerID为4的记录。
要求1:列出所有客户及其订单信息(左连接)
SELECT 客户表.CustomerName,订单表.OrderID,订单表.OrderDate, 订单表.Amount
FROM 客户表
LEFT JOIN 订单表 ON 客户表.CustomerID = 订单表.CustomerID
结果如下:
这个查询将返回所有客户的信息,以及与他们相关的所有订单信息。没有订单的客户将显示其客户信息,但订单相关字段将为 NULL。
要求2:列出有订单的客户及其订单信息(内连接)
SELECT 客户表.CustomerName,订单表.OrderID,订单表.OrderDate, 订单表.Amount
FROM 客户表
INNER JOIN 订单表 ON 客户表.CustomerID = 订单表.CustomerID
结果如下:
所以内连接的查询将只返回那些有订单的客户及其订单信息。没有订单的客户将不会出现在结果集中。
要求3:列出所有订单对应的客户姓名(右连接)
SELECT 客户表.CustomerName,订单表.OrderID,订单表.OrderDate, 订单表.Amount
FROM 客户表
RIGHT JOIN 订单表 ON 客户表.CustomerID = 订单表.CustomerID
右连接的查询以为第二个表为主,与左连接正好相反。
要求4:列出所有客户对应的订单,所有订单对应的客户。
除了以上三种连接以外,实际情况中我们可能还需要显示两个表中的所有内容即我有的你没有的,你有的我没有的都需要显示出来,在SQL中这种查询叫做全连接,FULL JOIN,可惜在Access中不存在,不过我们可以通过变通的办法实现。
SELECT 客户表.CustomerName,订单表.OrderID,订单表.OrderDate, 订单表.Amount
FROM 客户表
LEFT JOIN 订单表 ON 客户表.CustomerID = 订单表.CustomerID
UNION
SELECT 客户表.CustomerName,订单表.OrderID,订单表.OrderDate, 订单表.Amount
FROM 客户表
RIGHT JOIN 订单表 ON 客户表.CustomerID = 订单表.CustomerID
查询结果如下:
标签:语法,JOIN,连接,Access,订单,客户,SQL,查询,CustomerID From: https://www.cnblogs.com/o-O-oO/p/18648954原创 武旭鹏 米宏Office