【发布时间】:2015-12-02 08:15:02
【问题描述】:
我在 MS Access 中工作,试图解决一个有效的 SQL 语句。在表单上,我有一个显示员工列表的组合框。我有一个单独的对话框表单,允许用户在列表框中选择多个项目。每个项目代表一个认证。每个员工都可以拥有任意数量和组合的证书。最终,我只想更新组合框的 RowSource 属性,以通过分配适当的 SQL 语句来反映新的过滤数据。
如果我想过滤员工组合框中的列表,我使用这个 SQL 语句:
SELECT
Employees.Employee_ID, Employees.Last_Name, Employees.First_Name
FROM
Employees
INNER JOIN
Emp_Certs ON Employees.Employee_ID = Emp_Certs.Employee_ID
WHERE
(((Employees.Active_Member) = Yes)
AND ((Emp_Certs.Employee_ID) = [Employees].[Employee_ID])
AND ((Emp_Certs.Cert_ID) = 1))
ORDER BY
Employees.Last_Name;
如果我运行此查询,它会起作用,因为我只为Emp_Certs.Cert_ID 分配了一个值。但是当我像这样添加另一个时:
SELECT
Employees.Employee_ID, Employees.Last_Name, Employees.First_Name
FROM
Employees
INNER JOIN
Emp_Certs ON Employees.Employee_ID = Emp_Certs.Employee_ID
WHERE
(((Employees.Active_Member) = Yes)
AND ((Emp_Certs.Employee_ID) = [Employees].[Employee_ID])
AND ((Emp_Certs.Cert_ID) = 1)
AND ((Emp_Certs.Cert_ID) = 4))
ORDER BY Employees.Last_Name;
我得到一个空集。这不是我所期望的。 Emp_Certs 表显然有几个员工同时拥有认证 1 和 4。 如果我想指示多个 Cert_ID 并让员工记录在组合框中仅显示一次,有人可以解释一下应该如何编写。我不需要在组合框中多次显示员工记录。
这可能会有所帮助:
【问题讨论】:
标签: sql ms-access join vba ms-access-2010