【问题标题】:Query a table only to see the rows that match rows in two other tables仅查询表以查看与其他两个表中的行匹配的行
【发布时间】:2014-12-31 18:31:45
【问题描述】:

我有两个文件夹,里面有文件。文件及其数据存储在表中,每个文件夹一个表。文件夹表仅包含当前位于文件夹中的文件的数据。我有另一个表,其中包含所有数据,甚至是不再位于两个文件夹中的文件,只是为了跟踪历史记录。

我需要一个查询来显示两个表的内容,但不显示文件夹中不再存在的文件。

更多信息:

  • 每个文件都有一个 ID
  • 每个ID都不一样
  • 文件夹 A 没有任何与文件夹 B 匹配的 ID
  • 此数据存储在 Access 2010 中

我认为可行的方法:

我正在考虑使用第三个表和其他两个文件夹表的 inner join,其中 where 子句仅显示:

TableC.ID = TableA.ID AND TableC.ID = TableB.ID

但这不起作用。

【问题讨论】:

    标签: sql ms-access-2010 inner-join


    【解决方案1】:

    试试....

    select ID,detail1,details From TableA 
    union
    Select ID,detail1,detail2... from TableB
    

    【讨论】:

      【解决方案2】:
      select commonColumns, AOnlyColumn, NULL As BOnlyColumn
      from FolderA
      
      UNION
      
      select commonColumns, NULL, BOnlyColumn
      from FolderB
      

      【讨论】:

      • 嗨,联合对任何匹配的列都有效,但是如果文件夹 B 中有一些不在文件夹 A 中的列怎么办?
      • 然后你使用占位符列。我将更新我的答案以显示它的外观
      • 这是有道理的,是的,确实有效。我现在意识到,我需要查询表 C 中的数据,但只显示表 C ID = 表 B ID o 表 A ID,因为表 C 具有所有 ID 和过去 ID,它还包含更改的列数据,不像文件夹 A 表和 B 表它们只是库的当前数据的导入,但是我们在表 C 中的这些 ID 中添加了额外的数据......我希望有一种方法可以使它起作用我可以从表中选择 * C 其中 ID.Table C = ID.TableB 或表 A​​ 像 b 和 a 中的一样。谢谢!
      • 在没有联合条款的情况下,有什么办法可以使这项工作正常进行吗?因为文件夹表A和表B中的数据只是这些文件夹中数据的导入,但是表C有所有的数据存档和附加信息。
      • 您将需要联合,但您可以更改构成联合的现有查询,以便每个查询也加入到 TableC。
      猜你喜欢
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2012-06-05
      • 1970-01-01
      • 1970-01-01
      • 2010-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多