2014-11-25 60 views
3

我在Access数据库中有两个表,Table1和Table2的结构完全相同,但Table1有更多的数据。我想知道我从Table2中缺少哪些数据。每个表的主键是由文本字段:比较两个结构完全相同但没有数据的Access表

  • CenterName
  • BuildingName
  • FloorNo
  • RoomNo

每个中心可以有许多建筑物和两个不同的中心可以有用相同的名字建造。不同建筑物和不同中心的房间号码和楼层号码也可以相同。

我已经试过

SELECT t1.CenterName, t1.BuildingName, t1.FloorNo, t1.RoomNo, t2.CenterName 
FROM Table1 as t1 LEFT JOIN Table2 as t2 ON t1.CenterName=t2.CenterName 
WHERE t2.CenterName Is Null; 

但上面不返回任何数据,这意味着所有的中心都表所示。但是它并没有告诉我关于表2中可能缺少的其他字段的任何信息。 任何人都可以请帮助重新写我的查询,使其按预期工作?

我习惯于SQL Server数据库,因此在Access中构建查询对我而言有点耗时。在将所有数据传输到SQL Server进行分析之前,我想看看我能否在这里获得任何帮助。

回答

3

加入组成主键的所有四个字段。

SELECT 
    t1.CenterName, 
    t1.BuildingName, 
    t1.FloorNo, 
    t1.RoomNo, 
    t2.CenterName 
FROM 
    Table1 AS t1 
    LEFT JOIN Table2 AS t2 
    ON 
      t1.CenterName = t2.CenterName 
     AND t1.BuildingName = t2.BuildingName 
     AND t1.FloorNo = t2.FloorNo 
     AND t1.RoomNo = t2.RoomNo 
WHERE t2.CenterName Is Null; 
+0

这给了我一个错误JOIN不支持 – ElenaDBA 2014-11-25 15:00:54

+0

我刚才在Access 2010中进行测试,创建的*表1 *和*表2 *与4个文本字段为每个主键。将数据添加到这些表中。将此答案中的SQL粘贴到新查询的SQL视图中,并且它无误地运行,检索* Table2 *中不存在的* Table1 *记录。我不明白为什么它会失败。如果您将数据库的副本发布到文件共享站点,我会仔细研究它。 – HansUp 2014-11-25 15:12:30

+0

对不起,这是我的坏,我犯了一个错字。我跑它,它跑了,但坠毁访问 – ElenaDBA 2014-11-25 15:18:28