Ms access 编写Iif语句以更新表

Ms access 编写Iif语句以更新表,ms-access,ms-access-2010,Ms Access,Ms Access 2010,我正在使用Access 2010 我想在三张桌子之间做一个手术。第一个表和第二个表具有相同的ID字段,因此使用此字段进行连接。第二个表和第三个表具有部门ID,因此使用该表进行连接。不过,并非第二个表中的所有ID都存在于第三个表中 我正在尝试运行一个将更新第一个表中的字段的查询。查询将确定第二个表中的部门ID是否存在于第三个表中。如果是,它将使用第三个表中的另一个字段(部门ID全名)来更新第一个表。如果没有,它将使用第二个表中现有的部门ID来更新第一个表 到目前为止,我得到的是: Field: R

我正在使用Access 2010

我想在三张桌子之间做一个手术。第一个表和第二个表具有相同的ID字段,因此使用此字段进行连接。第二个表和第三个表具有部门ID,因此使用该表进行连接。不过,并非第二个表中的所有ID都存在于第三个表中

我正在尝试运行一个将更新第一个表中的字段的查询。查询将确定第二个表中的部门ID是否存在于第三个表中。如果是,它将使用第三个表中的另一个字段(部门ID全名)来更新第一个表。如果没有,它将使用第二个表中现有的部门ID来更新第一个表

到目前为止,我得到的是:

Field: Relevant field in Table 1
Table: Table 1
Update To: IIf([Table 2].[Dept ID] In (SELECT [Table 3].[Dept ID] FROM [Table 3]),[Table 3].[Dept ID Full Name],[Table 2].[Dept ID])
我以前从来没有写过这样的东西,而且对Iif查询是完全陌生的,所以我不确定这是否非常接近!目前我有一个错误:“操作必须使用可更新的查询”

在SQL中编辑:

UPDATE 
    ([Table 1] INNER JOIN 
        [Table 2 ON [Table 1].[ID] = [Table 2].[ID]) INNER JOIN 
            [Table 3] ON [Table 2].[Dept ID] = [Table 3].[Dept ID] 

SET [Table 1].[Dept] = 

IIf([Table 2].[Dept ID] In (SELECT [Table 3].[Dept ID] FROM [Table 3]),
[Table 3].[Dept Name],[Table 2].[Dept ID]);

如果不是[表2]中的所有ID都存在于[表3]中,则可能需要涉及左(或右)连接的解决方案。我刚刚尝试了以下SQL语句,它似乎对我有效:

UPDATE 
    (
        [Table 1] 
        INNER JOIN 
        [Table 2] 
            ON [Table 1].Key1 = [Table 2].Key1
    ) 
    LEFT JOIN 
    [Table 3] 
        ON [Table 2].[Dept ID] = [Table 3].[Dept ID] 
SET 
    [Table 1].FieldToUpdate = IIf(IsNull([Table 3].[Dept ID]),[Table 2].[Dept ID],[Table 3].[Dept ID Full Name]);

(在您编辑您的问题之前,我自己编了一些专栏名称,因此您必须进行调整以适应。)

对不起,我不确定这是什么。如果有帮助的话,我已经在后台添加了SQL代码。我最初只是将我想要的内容分成两个查询,然后一个接一个地运行它们,但这项工作做得很好。非常感谢!