时 间:2008-4-3 7:51:20
作 者:Microsoft
摘 要:使用联合查询合并多个选择查询的结果
正 文:
对于多个相似的选择查询,当您希望将它们返回的所有数据一起作为一个合并的集合查看时,便可以使用联合查询。
本文将向您介绍如何根据两个或多个现有的选择查询创建联合查询,同时说明如何使用结构化查询语言 (SQL) 编写联合查询。
为完成本文中的示例,您应该对如何创建和运行选择查询有基本的了解。有关如何创建选择查询的详细信息,请参阅请参阅部分中的链接。
联合查询可合并多个相似的选择查询的结果集。
例如,假设您有两个表,一个用于存储有关客户的信息,另一个用于存储有关供应商的信息,并且这两个表之间不存在任何关系。又假设这两个表都有一些存储联系人信息的字段,而您希望同时查看这两个表中的所有联系人信息。
您可以为每个表都创建一个选择查询 (选择查询:就表中存储的数据提出问题,然后在不更改数据的情况下以数据表的形式返回一个结果集。),以便只检索包含联系人信息的那些字段,但返回的信息仍将位于两个单独的位置。要将两个或多个选择查询的结果合并到一个结果集中,可以使用联合查询。
联合查询中合并的选择查询必须具有相同的输出字段数、采用相同的顺序并包含相同或兼容的数据类型。在运行联合查询时,来自每组相应字段中的数据将合并到一个输出字段中,这样查询输出所包含的字段数将与每个 Select 语句相同。
注释 根据联合查询的目的,“数字”和“文本”数据类型兼容。
联合查询是特定于 SQL 的。特定于 SQL 的查询不能在“设计”视图中显示,因此必须直接用 SQL 编写。在 Microsoft Office Access 2007 中,您可以使用“SQL 视图”对象选项卡编写特定于 SQL 的查询,包括联合查询。
提示 每个查询都可以用 SQL 语句来表达。此外,大多数查询也可以在查询设计网格 (设计网格:在查询设计视图或“高级筛选/排序”窗口中设计查询或筛选时所用的网格。对于查询,该网格以前称为“QBE 网格”。)中表达,如果此环境可用,构建查询将更加轻松。在使用设计网格创建查询时,您始终都可以切换到 SQL 视图,以查看运行查询时所处理的 SQL 语句。在 SQL 视图中查看查询是一种很好的做法,因为您可以通过此途径熟悉 SQL 并加深对查询工作方式的理解。在某些情况下,您还可以使用 SQL 视图对未返回预期结果的查询进行故障排除。
在联合查询中,每个选择查询(又称为 Select 语句)都有一个 SELECT 子句和 FROM 子句,还可能有 WHERE 子句。SELECT 子句列出包含要检索的数据的字段;FROM 子句列出包含这些字段的表;WHERE 子句则列出这些字段的条件。联合查询中的 Select 语句用 UNION 关键字组合在一起。
对于合并了两个选择查询的联合查询,其基本 SQL 语法如下:
SELECT field_1[, field_2,…]
FROM table_1[, table_2,…]
UNION [ALL]
SELECT field_a[, field_b,...]
FROM table_a[, table_b,…];
例如,假设您有两个表,分别名为 Products 和 Services。这两个表都具有包含下列内容的字段:产品或服务的名称、价格、保修或担保条款以及是否以独占方式提供产品或服务。虽然 Products 表存储了保修信息,而 Services 表存储了担保信息,但基本信息是相同的(即特定的产品或服务是否符合其质量承诺)。您可以使用联合查询将两个表中的这四个字段合并在一起,例如:
SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services;
让我们逐行检查上面的语法示例。
在使用 ALL 关键字时,Union 生成的合并集中并不删除重复行。这样,Access 便无需检查重复行的结果,从而可以显著提高查询的性能。如果满足下列任一条件,则应使用 ALL 关键字:
在本示例中,我们使用 ALL 关键字是因为我们既不期望会返回重复行,也没有略去它们的必要。
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |