在MS Access中查找同一表上的不匹配项

时间:2016-07-10 08:37:17

标签: ms-access match

我在MS Access中有点新手,但我已经开始在工作中进行一些数据验证,并认为现在是时候采用更简化的方式了。

第一次发帖时,我遇到了一个问题,只是"只有"在同一个表中显示不匹配的值,即错误

我有一个表(查询),其中我有一个数据库和另一个数据库中的员工详细信息。两者都有相同的信息,但两者都有一些不正确且需要更新的细节。作为一个例子,见下文:

Table1
Employee ID Surname EmpID   Surname1
123456789   Smith   123456789   Smith
654987321   Daniels 654987321   Volate
987654321   Hanks   987654321   Hanks
741852963   Donald  741852963   Draps

现在我要识别的是与#34; Surname"和" Surname1"

这应该是员工ID

741852963   Donald  741852963   Draps
654987321   Daniels 654987321   Volate

我要将此附加到错误表中,我可以列出值不匹配的所有错误。

我尝试的是以下内容:

Field: Matches: IIf([Table1].[Surname]<>[Table1].[Surname1],"Yes","No")

这似乎不起作用,因为所有结果都显示为是,我知道存在不一致的事实。

有谁知道该怎么做或怎么做?如果需要,可以提出任何问题。

谢谢

更新

好的,我认为如果我给你所有列的实际名称可能会更好。我认为简化它会更容易,但也许不是。

Assignment  PayC            HRIS Assignment No  WAPayCycle
12345678    No Payroll      12345678            Pay Cycle 1
20001868    SCP Pay Cycle 1 20001868            SCP Pay Cycle 1
20003272-2  SCP Pay Cycle 1 #Error
20014627    SCP Pay Cycle 1 20014627            SCP Pay Cycle 1

因此,这给出了我正在做的事情以及我需要反击的可能错误。第一个有不匹配所以我希望错误。第3行在一列中有一个Null值,在另一列中有一个Null,但是其中一行是#Error,而另一行只是空白。其余的都匹配。

链接以屏幕丢失 https://drive.google.com/open?id=0B-5TRrOketfyb0tCbElYSWNSM1k

3 个答案:

答案 0 :(得分:1)

此选项在[HRIS Assignment No]

中处理错误和空值
SELECT * , IIf([Assignment]<>IIf(IsError([HRIS Assignment No]),"",Nz([HRIS Assignment No]​),""),"Yes","No") As Err
FROM [pc look up]
WHERE [Assignment]<>IIf(IsError([HRIS Assignment No]),"",Nz([HRIS Assignment No]​),"")

答案 1 :(得分:0)

这应该有效:

SELECT *
FROM Table
WHERE EmployeeID = EmpID
AND Surname <> Surname1
OR Len(Nz(Surname,'')) = 0
OR Len(Nz(Surname1,'')) = 0

亲切的问候,

答案 2 :(得分:0)

在您的问题中,您声明“一个数据库,另一个数据库” 假设你从两个表开始(你已经向我们展示了将这四个字段连接在一起的查询?)那么这个查询就可以了:

$options = array_combine(range(1, $stock), range(1, $stock));

$this->Form->select('quantity', $options, ['empty' => 'Quantity'])

INNER JOIN将为您提供您所追求的结果。 LEFT JOIN将显示Table1中的所有值(别名为T1),只显示Table2中匹配的值(别名为T2) - 其他值将为NULL,右边的JOIN将显示相反的方式。