Microsoft Access查询-将两个查询合并为一个

时间:2019-01-30 21:50:33

标签: sql ms-access join

使用查询向导,我构建了两个不同的查询,它们具有相似的功能,试图将它们合并为一个查询。我有两个要匹配的表(结构相同)以查找重复项:

  1. 查询#1 如下(包括表1中的所有记录,并且仅表2中连接字段相等的那些记录应用于下面的所有列):

    Match Table 1 Column 3  to Table 2 Column 3
    Match Table 1 Column 4  to Table 2 Column 4
    Match Table 1 Column 5  to Table 2 Column 5
    Match Table 1 Column 7  to Table 2 Column 7
    

    如果表1中的所有这些列均与表2中的相匹配,它将识别出重复项(我在表2的第7列中显示了我正在寻找的重复项)。

  2. 查询#2 如下(包括表1中的所有记录,并且仅表2中连接字段相等的那些记录应用于以下所有列):

    Match Table 1 Column 3  to Table 2 Column 3
    Match Table 1 Column 4  to Table 2 Column 4
    Match Table 1 Column 5  to Table 2 Column 5
    Match Table 1 Column 8  to Table 2 Column 8
    

    我的第二个查询具有相同的3列,但最后一列不同。

    如果表1中所有这些列均与表2中的内容匹配,它将识别出重复项(我在表2的第7/8列中显示了我正在寻找的重复项)。

我正在尝试做的事情:

为查询添加OR语句,以显示第8列和第7列匹配项的两个重复项。例如表1列7匹配表2列7或表1列8匹配表2列8,例如显示重复项。

这是否需要UNION查询?

以下是其中之一的查询:

SELECT TABLE1.COLUMN_3, TABLE1.COLUMN_4, TABLE1. COLUMN_7, 
       TABLE2.COLUMN_7, TABLE1.COLUMN_5
FROM TABLE1 
LEFT JOIN TABLE2 
  ON  (TABLE1.COLUMN_7 = TABLE2.COLUMN_7) 
  AND (TABLE1.COLUMN_3 = TABLE2.COLUMN_3) 
  AND (TABLE1.COLUMN_4 = TABLE2.COLUMN_4) 
  AND (TABLE1.COLUMN_5 = TABLE2.COLUMN_5);

2 个答案:

答案 0 :(得分:2)

由于表名和列名中的空格,给定的SQL将无法运行。
此示例消除了这些空格。

SELECT
     Table1.Column3 , Table2.Column3
    ,Table1.Column4 , Table2.Column4
    ,Table1.Column5 , Table2.Column5
    ,Table1.Column7 , Table2.Column7
    ,Table1.Column8 , Table2.Column8

From      Table1 
Left Join Table2  
On

(        Table1.Column3 = Table2.Column3
 AND     Table1.Column4 = Table2.Column4
 AND     Table1.Column5 = Table2.Column5
 AND  (  Table1.Column7 = Table2.Column7
      OR Table1.Column8 = Table2.Column8
      )
 )

答案 1 :(得分:0)

创建查询3;添加Q1和Q2-将它们加入F7。这将导致该字段的所有匹配项。

创建查询4;添加Q1和Q2-将它们加入F8。这将导致该字段的所有匹配项。

您现在拥有2个具有这些匹配项的数据集(称为重复项)。然后决定如何显示/显示。如果您在单个记录集中需要它们-将它们写入单个公共临时表中。但是,否则,您可以轻松地将它们一起显示为子报表/表单。