我有一张桌子,上面满是以下员工:
tblEmployees
+--------------+------------+-----------+-------+
| EmployeeID | FirstName | LastName | Wage |
+--------------+------------+-----------+-------+
然后我有了一个表,用户可以从中将数据粘贴到表中,如下所示:
tblImport
+------------+-----------+--------------+
| EmployeeID | WorkDate | HoursWorked |
+------------+-----------+--------------+
这将进入另一个结构相同的表(HoursWorkedRecords
)。
当我从导入表追加到主表时,我首先想要的是:
用于检查粘贴到EmployeeID
表中的tblImport
中是否存在tblEmployees
的追加,如果存在,则将其追加到HoursWorkedRecords
。
在导入检查之前,EmployeeID
上没有给定WorkDate
的重复记录。
我的问题是我该如何实现?
答案 0 :(得分:0)
您可以使用查询来执行此操作。如果您在LEFT JOIN
的{{1}}和HoursWorkedRecords
之间使用tblEmployees
,则employee表中的任何空条目将表示找不到该雇员的工作时间记录。您可以直接使用此查询,也可以通过VBA模块使用该查询。
查询的(未经测试的)SQL是
EmployeeID
答案 1 :(得分:0)
您的问题的答案取决于如果您的任何一项要求均未得到满足,您希望如何进行:
EmployeeID
表中没有找到{{1>} ,怎么办? tblEmployees
表中找到 个重复项,应该怎么办?如果这些问题的答案是简单地忽略不符合条件的记录,则可以通过相对简单的HoursWorkedRecords
查询来实现:
INSERT
在这里,insert into hoursworkedrecords
select
i.employeeid, i.workdate, i.hoursworked
from
(tblimport i inner join tblemployees e on i.employeeid = e.employeeid)
left join hoursworkedrecords h on i.employeeid = h.employeeid and i.workdate = h.workdate
where
h.employeeid is null
表上的inner join
确保tblEmployees
有效,并且EmployeeID
表上的left join
与{ {1}}标准可确保该员工在该日期的记录不存在。
但是,如果应提醒用户注意这些问题,则应使用上述查询的相反内容来选择无效记录,以供用户在继续之前进行检查。