使用具有以下设计的 MS Access 数据库:
Tables
Equipment, Employees, CreditCard
Fields
Equipment: ID, PrimaryEmployee, SecondaryEmployee
Employees: ID, CreditCard
CreditCard: ID, Number, Pin
因此,一件设备可以有两个不同的员工分配给它。每个员工可以有一张信用卡分配给他们,或者根本没有。
基于一台设备的ID:
- 如果该设备设置了 SecondaryEmployeeID,并且相应的 Employee 设置了 CreditCard,则返回该 CreditCard 的值。
- 否则,如果该设备设置了 PrimaryEmployeeID,并且相应的 Employee 设置了 CreditCard,则返回该 CreditCard 的值。
我还必须在同一个查询中从员工表中提取员工的姓名,因此,我之前使用的是 LEFT JOIN,这似乎使我无法做到这一点。
已编辑
我当前的查询尝试:
SELECT
Equipment.ID,
Equipment.PrimaryEmployee,
Equipment.SecondaryEmployee,
Employees.CreditCard,
CreditCard.Pin
FROM
(Equipment
LEFT JOIN Employees ON Equipment.PrimaryEmployee = Employees.ID
)
LEFT JOIN CreditCard ON Employees.CreditCard = CreditCard.ID
WHERE (((Equipment.EquipmentType)=1))
我从查询中删除了一些不相关的字段,希望能提高可读性,并简化我遇到问题的区域。
这目前正在生成如下结果:
ID PrimaryEmployee SecondaryEmployee CreditCard Pin
--------------------------------------------------------------------
1 John Doe Jack Smith 1234567890 1234
2 Bubba Smith Ryan Howard 2345678901 2345
问题是它只匹配 PrimaryEmployee。我需要它首先检查 SecondaryEmployee,如果没有匹配或信用卡设置,则匹配 PrimaryEmployee。如果两者都不匹配,则返回 Null 或 '-'。
让我知道是否仍需要其他信息。