访问不匹配的查询多个类似记录

时间:2016-11-04 18:44:35

标签: sql sql-server-2008 ms-access

问题:有没有办法让不匹配的查询返回包含多个项目但信息相同的记录?

我正在针对表和SQL查询运行不匹配的查询。一切都适用于查询中不存在的记录。我的问题在于,当查询中存在多个记录时,无法识别应重复的记录。

这些是需要安装和跟踪的飞机部件。每个部分都有与其位置LOC相关联的代码。在某些情况下,部件具有相同的LOC代码,但安装了多个部件。

示例:在一种情况下,我们安装了8个螺栓。该表单独列出了每个螺栓,它们都具有相同的LOC。如果仅安装了一个螺栓,则不匹配的查询不会返回未安装的其余7个螺栓的值。它看到一个螺栓并继续前进。

有没有办法让不匹配的查询返回包含多个项目但LOCName相同的记录?

SELECT [MCDS-E].MODEL, [MCDS-E].LOC, [MCDS-E].NOMENCLATURE, [MCDS-E].CHANGE_TYPE,
       [MCDS-E].TBO, [MCDS-E].CHANGE_NUMBER, [MCDS-E].DA2410, 
       [MCDS-E].LOCAL_TRACKED, [MCDS-E].COMMENTS    
FROM [MCDS-E] 
LEFT JOIN Select_ACFT ON [MCDS-E].[LOC] = Select_ACFT.[LOC]    
WHERE ((([MCDS-E].MODEL)=Forms!Index!Text5) 
   AND ((Select_ACFT.LOC) Is Null));

我的桌子可能有:

    LOC        NOMENCLATURE

 - ABCD123     Bolt
 - ABCD123     Bolt 
 - ABCD123     Bolt 
 - ABCD123     Bolt

查询可能包含:

    LOC        NOMENCLATURE
 - ABCD123     Bolt

匹配查询不会显示未安装的其他三个ABCD123螺栓的任何结果。

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:0)

考虑将当前查询返回不匹配的记录,将查询结果集重新连接到原始表。找到这些特定的LOC后,请加入相关项目的完整[MCDS-E]表。

以下假设名称是用作联接的主要NOMENCLATURE字段:

SELECT main.MODEL, main.LOC, main.NOMENCLATURE, main.CHANGE_TYPE,
       main.TBO, main.CHANGE_NUMBER, main.DA2410, 
       main.LOCAL_TRACKED, main.COMMENTS  
FROM [MCDS-E] main
INNER JOIN
  (SELECT m.[LOC], m.NOMENCLATURE
   FROM [MCDS-E] m
   LEFT JOIN Select_ACFT s ON m.[LOC] = s.[LOC]    
   WHERE ((([MCDS-E].MODEL)=Forms!Index!Text5) 
      AND ((Select_ACFT.LOC) Is Null))) AS dT
ON dT.NOMENCLATURE = main.NOMENCLATURE

或者,将嵌套SELECT保存为自己的查询:

SELECT main.MODEL, main.LOC, main.NOMENCLATURE, main.CHANGE_TYPE,
       main.TBO, main.CHANGE_NUMBER, main.DA2410, 
       main.LOCAL_TRACKED, main.COMMENTS  
FROM [MCDS-E] main
INNER JOIN [UnmatchedQuery] u
ON main.NOMENCLATURE = u.NOMENCLATURE